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)

Reply via email to