1
0
mirror of https://github.com/moparisthebest/curl synced 2024-11-11 20:15:03 -05:00

imap: Added stricter parsing of tagged command responses

Enhanced the parsing of tagged responses which must start with "OK",
"NO" or "BAD"
This commit is contained in:
Jiri Hruska 2013-02-24 12:48:43 +01:00 committed by Steve Holme
parent c38d69f06a
commit 66149248ba

View File

@ -335,8 +335,19 @@ static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
size_t wordlen;
/* Do we have a tagged command response? */
if(len >= id_len + 3 && !memcmp(id, line, id_len) && line[id_len] == ' ') {
*resp = line[id_len + 1]; /* O, N or B */
if(len >= id_len + 1 && !memcmp(id, line, id_len) && line[id_len] == ' ') {
len = len - id_len - 1;
if(len >= 2 && !memcmp(line + id_len + 1, "OK", 2))
*resp = 'O';
else if(len >= 2 && !memcmp(line + id_len + 1, "NO", 2))
*resp = 'N';
else if(len >= 3 && !memcmp(line + id_len + 1, "BAD", 3))
*resp = 'B';
else {
failf(conn->data, "Bad tagged response");
*resp = -1;
}
return TRUE;
}