Commit 671f896c authored by Jiri Hruska's avatar Jiri Hruska Committed by Steve Holme
Browse files

imap: Added stricter parsing of continuation responses

Enhanced the parsing to only allow continuation responses in some
states.
parent 7f5824a1
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -356,7 +356,25 @@ static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
  /* Do we have a continuation response? */
  if((len == 3 && !memcmp("+", line, 1)) ||
     (len >= 2 && !memcmp("+ ", line, 2))) {
    switch(imapc->state) {
      /* States which are interested in continuation responses */
      case IMAP_AUTHENTICATE_PLAIN:
      case IMAP_AUTHENTICATE_LOGIN:
      case IMAP_AUTHENTICATE_LOGIN_PASSWD:
      case IMAP_AUTHENTICATE_CRAMMD5:
      case IMAP_AUTHENTICATE_DIGESTMD5:
      case IMAP_AUTHENTICATE_DIGESTMD5_RESP:
      case IMAP_AUTHENTICATE_NTLM:
      case IMAP_AUTHENTICATE_NTLM_TYPE2MSG:
      case IMAP_AUTHENTICATE:
        *resp = '+';
        break;

      default:
        failf(conn->data, "Unexpected continuation response");
        *resp = -1;
        break;
    }

    return TRUE;
  }