mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
aprintf: detect wrap-around when growing allocation
On 32bit systems we could otherwise wrap around after 2GB and allocate 0 bytes and crash. CVE-2016-8618 Bug: https://curl.haxx.se/docs/adv_20161102D.html Reported-by: Cure53
This commit is contained in:
parent
ee4f76606c
commit
8732ec40db
@ -1036,16 +1036,19 @@ static int alloc_addbyter(int output, FILE *data)
|
||||
infop->len =0;
|
||||
}
|
||||
else if(infop->len+1 >= infop->alloc) {
|
||||
char *newptr;
|
||||
char *newptr = NULL;
|
||||
size_t newsize = infop->alloc*2;
|
||||
|
||||
newptr = realloc(infop->buffer, infop->alloc*2);
|
||||
/* detect wrap-around or other overflow problems */
|
||||
if(newsize > infop->alloc)
|
||||
newptr = realloc(infop->buffer, newsize);
|
||||
|
||||
if(!newptr) {
|
||||
infop->fail = 1;
|
||||
return -1; /* fail */
|
||||
}
|
||||
infop->buffer = newptr;
|
||||
infop->alloc *= 2;
|
||||
infop->alloc = newsize;
|
||||
}
|
||||
|
||||
infop->buffer[ infop->len ] = outc;
|
||||
|
Loading…
Reference in New Issue
Block a user