mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
smtp: Fixed an issue when processing EHLO failure responses
Fixed a small issue where smtp_endofresp() would look for capabilities in the description part of a failure response. In theory a server shouldn't respond with SIZE or AUTH in an EHLO command's failure response but if it did then capabilities would be unnecessarily set before eventually failing.
This commit is contained in:
parent
21657823ea
commit
23d17190ee
11
lib/smtp.c
11
lib/smtp.c
@ -213,17 +213,18 @@ static int smtp_endofresp(struct pingpong *pp, int *resp)
|
||||
size_t len = pp->nread_resp;
|
||||
struct connectdata *conn = pp->conn;
|
||||
struct smtp_conn *smtpc = &conn->proto.smtpc;
|
||||
int result;
|
||||
size_t wordlen;
|
||||
|
||||
if(len < 4 || !ISDIGIT(line[0]) || !ISDIGIT(line[1]) || !ISDIGIT(line[2]))
|
||||
return FALSE; /* Nothing for us */
|
||||
|
||||
/* Extract the response code if necessary */
|
||||
if((result = (line[3] == ' ')) != 0)
|
||||
/* Do we have a command response? */
|
||||
if(line[3] == ' ') {
|
||||
*resp = curlx_sltosi(strtol(line, NULL, 10));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Are we processing EHLO command responses? */
|
||||
/* Are we processing EHLO command data? */
|
||||
if(smtpc->state == SMTP_EHLO) {
|
||||
line += 4;
|
||||
len -= 4;
|
||||
@ -276,7 +277,7 @@ static int smtp_endofresp(struct pingpong *pp, int *resp)
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* This is the ONLY way to change SMTP state! */
|
||||
|
Loading…
Reference in New Issue
Block a user