mirror of
https://github.com/curl/curl.git
synced 2026-06-24 04:05:38 +03: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
1 changed files with 13 additions and 4 deletions
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…
Add table
Add a link
Reference in a new issue