mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
smtp: Fixed dot stuffing being performed when no new data read
Whilst I had moved the dot stuffing code from being performed before
CRLF conversion takes place to after it, in commit 4bd860a001
, I had
moved it outside the 'when something read' block of code when meant
it could perform the dot stuffing twice on partial send if nread
happened to contain the right values. It also meant the function could
potentially read past the end of buffer. This was highlighted by the
following warning:
warning: `nread' might be used uninitialized in this function
This commit is contained in:
parent
5409f32984
commit
9afd97022e
@ -935,6 +935,7 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
|
|||||||
else
|
else
|
||||||
data->state.scratch[si] = data->req.upload_fromhere[i];
|
data->state.scratch[si] = data->req.upload_fromhere[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
if(si != nread) {
|
if(si != nread) {
|
||||||
/* only perform the special operation if we really did replace
|
/* only perform the special operation if we really did replace
|
||||||
anything */
|
anything */
|
||||||
@ -947,11 +948,6 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
|
|||||||
data->req.upload_present = nread;
|
data->req.upload_present = nread;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} /* if 0 == data->req.upload_present */
|
|
||||||
else {
|
|
||||||
/* We have a partial buffer left from a previous "round". Use
|
|
||||||
that instead of reading more data */
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef CURL_DISABLE_SMTP
|
#ifndef CURL_DISABLE_SMTP
|
||||||
if(conn->handler->protocol & PROTO_FAMILY_SMTP) {
|
if(conn->handler->protocol & PROTO_FAMILY_SMTP) {
|
||||||
@ -960,6 +956,11 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
#endif /* CURL_DISABLE_SMTP */
|
#endif /* CURL_DISABLE_SMTP */
|
||||||
|
} /* if 0 == data->req.upload_present */
|
||||||
|
else {
|
||||||
|
/* We have a partial buffer left from a previous "round". Use
|
||||||
|
that instead of reading more data */
|
||||||
|
}
|
||||||
|
|
||||||
/* write to socket (send away data) */
|
/* write to socket (send away data) */
|
||||||
result = Curl_write(conn,
|
result = Curl_write(conn,
|
||||||
|
Loading…
Reference in New Issue
Block a user