summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2014-08-09 17:37:02 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2014-08-09 17:37:02 +0200
commit760063ab57aa42ea82f1bf5c9177c0cde206aeee (patch)
tree611a4d90579e9e5024540e2af85e918df0257c88
parent3472f91129a7a594b356f9a22af2a8176f6e4b1c (diff)
downloadplan9front-760063ab57aa42ea82f1bf5c9177c0cde206aeee.tar.xz
cwfs: fix 32bit multiplication overflows for allocation sizes (thanks kenji okomoto)
-rw-r--r--sys/src/cmd/cwfs/main.c8
-rw-r--r--sys/src/cmd/cwfs/malloc.c6
-rw-r--r--sys/src/cmd/cwfs/mworm.c2
-rw-r--r--sys/src/cmd/cwfs/sub.c2
4 files changed, 9 insertions, 9 deletions
diff --git a/sys/src/cmd/cwfs/main.c b/sys/src/cmd/cwfs/main.c
index eaba6c1c1..97ce1cb42 100644
--- a/sys/src/cmd/cwfs/main.c
+++ b/sys/src/cmd/cwfs/main.c
@@ -323,15 +323,15 @@ main(int argc, char **argv)
netinit();
scsiinit();
- files = ialloc(conf.nfile * sizeof(*files), 0);
+ files = ialloc((uintptr)conf.nfile * sizeof(*files), 0);
for(i=0; i < conf.nfile; i++) {
qlock(&files[i]);
qunlock(&files[i]);
}
- wpaths = ialloc(conf.nwpath * sizeof(*wpaths), 0);
- uid = ialloc(conf.nuid * sizeof(*uid), 0);
- gidspace = ialloc(conf.gidspace * sizeof(*gidspace), 0);
+ wpaths = ialloc((uintptr)conf.nwpath * sizeof(*wpaths), 0);
+ uid = ialloc((uintptr)conf.nuid * sizeof(*uid), 0);
+ gidspace = ialloc((uintptr)conf.gidspace * sizeof(*gidspace), 0);
iobufinit();
diff --git a/sys/src/cmd/cwfs/malloc.c b/sys/src/cmd/cwfs/malloc.c
index 165599623..25ae33b5f 100644
--- a/sys/src/cmd/cwfs/malloc.c
+++ b/sys/src/cmd/cwfs/malloc.c
@@ -100,15 +100,15 @@ iobufinit(void)
nhiob++;
if(chatty)
print("\t%ud buffers; %ud hashes\n", niob, nhiob);
- hiob = ialloc(nhiob * sizeof(Hiob), 0);
+ hiob = ialloc((uintptr)nhiob * sizeof(Hiob), 0);
hp = hiob;
for(i=0; i<nhiob; i++) {
lock(hp);
unlock(hp);
hp++;
}
- p = ialloc(niob * sizeof(Iobuf), 0);
- xiop = ialloc(niob * RBUFSIZE, 0);
+ p = ialloc((uintptr)niob * sizeof(Iobuf), 0);
+ xiop = ialloc((uintptr)niob * RBUFSIZE, 0);
hp = hiob;
for(i=0; i < niob; i++) {
qlock(p);
diff --git a/sys/src/cmd/cwfs/mworm.c b/sys/src/cmd/cwfs/mworm.c
index b4d444236..14e9dea5b 100644
--- a/sys/src/cmd/cwfs/mworm.c
+++ b/sys/src/cmd/cwfs/mworm.c
@@ -14,7 +14,7 @@ mcatinit(Device *d)
d->cat.ndev++;
}
- list = ialloc(d->cat.ndev * sizeof(Device*), 0);
+ list = ialloc((uintptr)d->cat.ndev * sizeof(Device*), 0);
d->private = list;
for(x=d->cat.first; x; x=x->link) {
*list++ = x;
diff --git a/sys/src/cmd/cwfs/sub.c b/sys/src/cmd/cwfs/sub.c
index c73c3d3ab..bf9a59e1d 100644
--- a/sys/src/cmd/cwfs/sub.c
+++ b/sys/src/cmd/cwfs/sub.c
@@ -38,7 +38,7 @@ fs_chaninit(int count, int data)
Chan *cp, *icp;
int i;
- p = ialloc(count * (sizeof(Chan)+data), 0);
+ p = ialloc((uintptr)count * (sizeof(Chan)+data), 0);
icp = (Chan*)p;
for(i = 0; i < count; i++) {
cp = (Chan*)p;