Module Name: src Committed By: christos Date: Mon Mar 7 15:55:06 UTC 2016
Modified Files: src/sbin/newfs: mkfs.c Log Message: PR/50910: David Binderman: Optimize memset. To generate a diff of this commit: cvs rdiff -u -r1.126 -r1.127 src/sbin/newfs/mkfs.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sbin/newfs/mkfs.c diff -u src/sbin/newfs/mkfs.c:1.126 src/sbin/newfs/mkfs.c:1.127 --- src/sbin/newfs/mkfs.c:1.126 Mon Mar 7 10:09:55 2016 +++ src/sbin/newfs/mkfs.c Mon Mar 7 10:55:06 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: mkfs.c,v 1.126 2016/03/07 15:09:55 dholland Exp $ */ +/* $NetBSD: mkfs.c,v 1.127 2016/03/07 15:55:06 christos Exp $ */ /* * Copyright (c) 1980, 1989, 1993 @@ -73,7 +73,7 @@ #if 0 static char sccsid[] = "@(#)mkfs.c 8.11 (Berkeley) 5/3/95"; #else -__RCSID("$NetBSD: mkfs.c,v 1.126 2016/03/07 15:09:55 dholland Exp $"); +__RCSID("$NetBSD: mkfs.c,v 1.127 2016/03/07 15:55:06 christos Exp $"); #endif #endif /* not lint */ @@ -735,8 +735,10 @@ mkfs(const char *fsys, int fi, int fo, * Write out the super-block and zeros until the first cg info */ i = cgsblock(&sblock, 0) * sblock.fs_fsize - sblock.fs_sblockloc; - memset(iobuf, 0, i); - memcpy(iobuf, &sblock, sizeof sblock); + if ((size_t)i < sizeof(sblock)) + errx(1, "No space for superblock"); + memcpy(iobuf, &sblock, sizeof(sblock)); + memset(iobuf + sizeof(sblock), 0, i - sizeof(sblock)); if (needswap) ffs_sb_swap(&sblock, (struct fs *)iobuf); if ((sblock.fs_old_flags & FS_FLAGS_UPDATED) == 0)