mirror of
https://github.com/curl/curl.git
synced 2024-11-27 05:50:21 +08:00
imap: remove the only sscanf() call in the IMAP code
Avoids the use of a stack buffer. Closes #11673
This commit is contained in:
parent
de5f66595e
commit
91765104c2
17
lib/imap.c
17
lib/imap.c
@ -1091,10 +1091,19 @@ static CURLcode imap_state_select_resp(struct Curl_easy *data, int imapcode,
|
||||
|
||||
if(imapcode == '*') {
|
||||
/* See if this is an UIDVALIDITY response */
|
||||
char tmp[20];
|
||||
if(sscanf(line + 2, "OK [UIDVALIDITY %19[0123456789]]", tmp) == 1) {
|
||||
Curl_safefree(imapc->mailbox_uidvalidity);
|
||||
imapc->mailbox_uidvalidity = strdup(tmp);
|
||||
if(checkprefix("OK [UIDVALIDITY ", line + 2)) {
|
||||
size_t len = 0;
|
||||
const char *p = &line[2] + strlen("OK [UIDVALIDITY ");
|
||||
while((len < 20) && p[len] && ISDIGIT(p[len]))
|
||||
len++;
|
||||
if(len && (p[len] == ']')) {
|
||||
struct dynbuf uid;
|
||||
Curl_dyn_init(&uid, 20);
|
||||
if(Curl_dyn_addn(&uid, p, len))
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
Curl_safefree(imapc->mailbox_uidvalidity);
|
||||
imapc->mailbox_uidvalidity = Curl_dyn_ptr(&uid);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(imapcode == IMAP_RESP_OK) {
|
||||
|
Loading…
Reference in New Issue
Block a user