imap: Added stricter parsing of continuation responses
Enhanced the parsing to only allow continuation responses in some states.
This commit is contained in:
parent
7f5824a106
commit
671f896c0b
18
lib/imap.c
18
lib/imap.c
@ -356,7 +356,25 @@ static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
|
|||||||
/* Do we have a continuation response? */
|
/* Do we have a continuation response? */
|
||||||
if((len == 3 && !memcmp("+", line, 1)) ||
|
if((len == 3 && !memcmp("+", line, 1)) ||
|
||||||
(len >= 2 && !memcmp("+ ", line, 2))) {
|
(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 = '+';
|
*resp = '+';
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
failf(conn->data, "Unexpected continuation response");
|
||||||
|
*resp = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user