summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorotto <otto@openbsd.org>2020-02-17 19:00:58 +0000
committerotto <otto@openbsd.org>2020-02-17 19:00:58 +0000
commitc348d7c6436b454931064680675b36b6aa42f6f5 (patch)
treecbda0091b13c5c53571a93cf24f1cd47e553eb82
parentremove unused code (diff)
downloadwireguard-openbsd-c348d7c6436b454931064680675b36b6aa42f6f5.tar.xz
wireguard-openbsd-c348d7c6436b454931064680675b36b6aa42f6f5.zip
Do not look for an FFS1 file system at SBLOCK_UFS2. Doing so will
find the wrong super-block for file systems with 64k block size. ok visa@
-rw-r--r--sbin/fsirand/fsirand.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/sbin/fsirand/fsirand.c b/sbin/fsirand/fsirand.c
index 8f2d15a9e7d..0b995890b87 100644
--- a/sbin/fsirand/fsirand.c
+++ b/sbin/fsirand/fsirand.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: fsirand.c,v 1.41 2019/06/28 13:32:43 deraadt Exp $ */
+/* $OpenBSD: fsirand.c,v 1.42 2020/02/17 19:00:58 otto Exp $ */
/*
* Copyright (c) 1997 Todd C. Miller <millert@openbsd.org>
@@ -148,6 +148,15 @@ fsirand(char *device)
sblock->fs_magic != FS_UFS2_MAGIC)
continue; /* Not a superblock */
+ /*
+ * Do not look for an FFS1 file system at SBLOCK_UFS2.
+ * Doing so will find the wrong super-block for file
+ * systems with 64k block size.
+ */
+ if (sblock->fs_magic == FS_UFS1_MAGIC &&
+ sbtry[i] == SBLOCK_UFS2)
+ continue;
+
if (sblock->fs_magic == FS_UFS2_MAGIC &&
sblock->fs_sblockloc != sbtry[i])
continue; /* Not a superblock */