calloc: check multiplication overflow

This commit is contained in:
cinap_lenrek 2012-08-19 10:50:39 +02:00
parent feb58cce49
commit be0301f458
2 changed files with 13 additions and 8 deletions

View file

@ -280,10 +280,13 @@ msize(void *v)
}
void*
calloc(ulong n, ulong szelem)
calloc(ulong n, ulong s)
{
void *v;
if(v = mallocz(n*szelem, 1))
if(n > 1 && ((ulong)-1)/n < s)
return nil;
if(v = mallocz(n*s, 1))
setmalloctag(v, getcallerpc(&n));
return v;
}