imap: Added stricter parsing of continuation responses

Enhanced the parsing to only allow continuation responses in some
states.
This commit is contained in:
Jiri Hruska 2013-02-24 14:54:25 +01:00 коммит произвёл Steve Holme
Родитель 7f5824a106
Коммит 671f896c0b
1 изменённых файлов: 19 добавлений и 1 удалений

Просмотреть файл

@ -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;
}