cwfs: fix 32bit multiplication overflows for allocation sizes (thanks kenji okomoto)

This commit is contained in:
cinap_lenrek 2014-08-09 17:37:02 +02:00
parent 3472f91129
commit 760063ab57
4 changed files with 9 additions and 9 deletions

View file

@ -323,15 +323,15 @@ main(int argc, char **argv)
netinit(); netinit();
scsiinit(); scsiinit();
files = ialloc(conf.nfile * sizeof(*files), 0); files = ialloc((uintptr)conf.nfile * sizeof(*files), 0);
for(i=0; i < conf.nfile; i++) { for(i=0; i < conf.nfile; i++) {
qlock(&files[i]); qlock(&files[i]);
qunlock(&files[i]); qunlock(&files[i]);
} }
wpaths = ialloc(conf.nwpath * sizeof(*wpaths), 0); wpaths = ialloc((uintptr)conf.nwpath * sizeof(*wpaths), 0);
uid = ialloc(conf.nuid * sizeof(*uid), 0); uid = ialloc((uintptr)conf.nuid * sizeof(*uid), 0);
gidspace = ialloc(conf.gidspace * sizeof(*gidspace), 0); gidspace = ialloc((uintptr)conf.gidspace * sizeof(*gidspace), 0);
iobufinit(); iobufinit();

View file

@ -100,15 +100,15 @@ iobufinit(void)
nhiob++; nhiob++;
if(chatty) if(chatty)
print("\t%ud buffers; %ud hashes\n", niob, nhiob); print("\t%ud buffers; %ud hashes\n", niob, nhiob);
hiob = ialloc(nhiob * sizeof(Hiob), 0); hiob = ialloc((uintptr)nhiob * sizeof(Hiob), 0);
hp = hiob; hp = hiob;
for(i=0; i<nhiob; i++) { for(i=0; i<nhiob; i++) {
lock(hp); lock(hp);
unlock(hp); unlock(hp);
hp++; hp++;
} }
p = ialloc(niob * sizeof(Iobuf), 0); p = ialloc((uintptr)niob * sizeof(Iobuf), 0);
xiop = ialloc(niob * RBUFSIZE, 0); xiop = ialloc((uintptr)niob * RBUFSIZE, 0);
hp = hiob; hp = hiob;
for(i=0; i < niob; i++) { for(i=0; i < niob; i++) {
qlock(p); qlock(p);

View file

@ -14,7 +14,7 @@ mcatinit(Device *d)
d->cat.ndev++; d->cat.ndev++;
} }
list = ialloc(d->cat.ndev * sizeof(Device*), 0); list = ialloc((uintptr)d->cat.ndev * sizeof(Device*), 0);
d->private = list; d->private = list;
for(x=d->cat.first; x; x=x->link) { for(x=d->cat.first; x; x=x->link) {
*list++ = x; *list++ = x;

View file

@ -38,7 +38,7 @@ fs_chaninit(int count, int data)
Chan *cp, *icp; Chan *cp, *icp;
int i; int i;
p = ialloc(count * (sizeof(Chan)+data), 0); p = ialloc((uintptr)count * (sizeof(Chan)+data), 0);
icp = (Chan*)p; icp = (Chan*)p;
for(i = 0; i < count; i++) { for(i = 0; i < count; i++) {
cp = (Chan*)p; cp = (Chan*)p;