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) {