diff options
author | 2005-01-06 08:57:30 +0000 | |
---|---|---|
committer | 2005-01-06 08:57:30 +0000 | |
commit | 8de904139d467fa6d74ea8992f2275498f0e775a (patch) | |
tree | 3264f84f930db4e53520a761df6d8f0b7755a244 | |
parent | Missing braces in pfctl_load_debug(), pointed out by camield@ (diff) | |
download | wireguard-openbsd-8de904139d467fa6d74ea8992f2275498f0e775a.tar.xz wireguard-openbsd-8de904139d467fa6d74ea8992f2275498f0e775a.zip |
validate mfs size to avoid wrapping. ok miod@
-rw-r--r-- | sbin/newfs/mkfs.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/sbin/newfs/mkfs.c b/sbin/newfs/mkfs.c index e965a1ee976..7d53f37709e 100644 --- a/sbin/newfs/mkfs.c +++ b/sbin/newfs/mkfs.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mkfs.c,v 1.45 2004/10/14 07:40:29 otto Exp $ */ +/* $OpenBSD: mkfs.c,v 1.46 2005/01/06 08:57:30 otto Exp $ */ /* $NetBSD: mkfs.c,v 1.25 1995/06/18 21:35:38 cgd Exp $ */ /* @@ -34,7 +34,7 @@ #if 0 static char sccsid[] = "@(#)mkfs.c 8.3 (Berkeley) 2/3/94"; #else -static char rcsid[] = "$OpenBSD: mkfs.c,v 1.45 2004/10/14 07:40:29 otto Exp $"; +static char rcsid[] = "$OpenBSD: mkfs.c,v 1.46 2005/01/06 08:57:30 otto Exp $"; #endif #endif /* not lint */ @@ -183,11 +183,16 @@ mkfs(struct partition *pp, char *fsys, int fi, int fo, time(&utime); #endif if (mfs) { - membase = mmap(NULL, fssize * sectorsize, PROT_READ|PROT_WRITE, + quad_t sz = (quad_t)fssize * sectorsize; + if (sz > SIZE_T_MAX) { + errno = ENOMEM; + err(12, "mmap"); + } + membase = mmap(NULL, sz, PROT_READ|PROT_WRITE, MAP_ANON|MAP_PRIVATE, -1, (off_t)0); if (membase == MAP_FAILED) err(12, "mmap"); - madvise(membase, fssize * sectorsize, MADV_RANDOM); + madvise(membase, sz, MADV_RANDOM); } fsi = fi; fso = fo; |