imap: Added stricter parsing of continuation responses
Enhanced the parsing to only allow continuation responses in some states.
This commit is contained in:
Родитель
7f5824a106
Коммит
671f896c0b
20
lib/imap.c
20
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? */
|
||||
if((len == 3 && !memcmp("+", line, 1)) ||
|
||||
(len >= 2 && !memcmp("+ ", line, 2))) {
|
||||
*resp = '+';
|
||||
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;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче