calloc: check multiplication overflow
This commit is contained in:
parent
feb58cce49
commit
be0301f458
2 changed files with 13 additions and 8 deletions
|
@ -2,12 +2,14 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
void *
|
void *
|
||||||
calloc(size_t nmemb, size_t size)
|
calloc(size_t n, size_t s)
|
||||||
{
|
{
|
||||||
void *mp;
|
void *v;
|
||||||
|
|
||||||
nmemb = nmemb*size;
|
if(n > 1 && ((size_t)-1)/n < s)
|
||||||
if(mp = malloc(nmemb))
|
return 0;
|
||||||
memset(mp, 0, nmemb);
|
n *= s;
|
||||||
return(mp);
|
if(v = malloc(n))
|
||||||
|
memset(v, 0, n);
|
||||||
|
return v;
|
||||||
}
|
}
|
||||||
|
|
|
@ -280,10 +280,13 @@ msize(void *v)
|
||||||
}
|
}
|
||||||
|
|
||||||
void*
|
void*
|
||||||
calloc(ulong n, ulong szelem)
|
calloc(ulong n, ulong s)
|
||||||
{
|
{
|
||||||
void *v;
|
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));
|
setmalloctag(v, getcallerpc(&n));
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue