Commit 23d17190 authored by Steve Holme's avatar Steve Holme
Browse files

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.
parent 21657823
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -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! */