Check for overflow before assigning.
- todd
Index: sbin/newfs/mkfs.c
===================================================================
RCS file: /cvs/src/sbin/newfs/mkfs.c,v
retrieving revision 1.89
diff -u -r1.89 mkfs.c
--- sbin/newfs/mkfs.c 20 Jan 2015 18:22:21 -0000 1.89
+++ sbin/newfs/mkfs.c 6 Feb 2015 21:30:01 -0000
@@ -182,11 +182,12 @@
time(&utime);
#endif
if (mfs) {
- quad_t sz = (quad_t)fssize * DEV_BSIZE;
- if (sz > SIZE_T_MAX) {
+ size_t sz;
+ if (fssize > SIZE_MAX / DEV_BSIZE) {
errno = ENOMEM;
err(12, "mmap");
}
+ sz = (size_t)fssize * DEV_BSIZE;
membase = mmap(NULL, sz, PROT_READ|PROT_WRITE,
MAP_ANON|MAP_PRIVATE, -1, (off_t)0);
if (membase == MAP_FAILED)