summaryrefslogtreecommitdiffstats
path: root/sbin
diff options
context:
space:
mode:
authorotto <otto@openbsd.org>2020-05-28 15:48:28 +0000
committerotto <otto@openbsd.org>2020-05-28 15:48:28 +0000
commitd06c4e1f5435c136423f9e1463cd963b162d217f (patch)
treeb823f424d20d18dc3f34ad57b3389fdfc4c616a5 /sbin
parentReduce 'ifa' overloading by renaming some parameters 'address'. (diff)
downloadwireguard-openbsd-d06c4e1f5435c136423f9e1463cd963b162d217f.tar.xz
wireguard-openbsd-d06c4e1f5435c136423f9e1463cd963b162d217f.zip
Make generation numbers unsigned and fill them using a random number
from the range [1..UINT_MAX] initially. On inode re-use increment and on wrap refill from the range [1..UINT_MAX-1] to avoid assigning UINT_MAX (the original value). Zero still means uninitialized. ok millert@
Diffstat (limited to 'sbin')
-rw-r--r--sbin/fsdb/fsdb.c10
-rw-r--r--sbin/newfs/mkfs.c12
2 files changed, 11 insertions, 11 deletions
diff --git a/sbin/fsdb/fsdb.c b/sbin/fsdb/fsdb.c
index 49128eae52f..d52f01aa7c8 100644
--- a/sbin/fsdb/fsdb.c
+++ b/sbin/fsdb/fsdb.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: fsdb.c,v 1.32 2018/09/16 02:44:06 millert Exp $ */
+/* $OpenBSD: fsdb.c,v 1.33 2020/05/28 15:48:28 otto Exp $ */
/* $NetBSD: fsdb.c,v 1.7 1997/01/11 06:50:53 lukem Exp $ */
/*-
@@ -708,20 +708,20 @@ CMDFUNCSTART(chaflags)
CMDFUNCSTART(chgen)
{
int rval = 1;
- long gen;
+ long long gen;
char *cp;
if (!checkactive())
return 1;
- gen = strtol(argv[1], &cp, 0);
+ gen = strtoll(argv[1], &cp, 0);
if (cp == argv[1] || *cp != '\0' ) {
warnx("bad gen `%s'", argv[1]);
return 1;
}
- if (gen > INT_MAX || gen < INT_MIN) {
- warnx("gen set beyond 32-bit range of field (%lx)", gen);
+ if (gen > UINT_MAX || gen < 0) {
+ warnx("gen set beyond 32-bit range of field (%llx)", gen);
return(1);
}
DIP_SET(curinode, di_gen, gen);
diff --git a/sbin/newfs/mkfs.c b/sbin/newfs/mkfs.c
index a3fce62a384..4d2c96b889d 100644
--- a/sbin/newfs/mkfs.c
+++ b/sbin/newfs/mkfs.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mkfs.c,v 1.99 2020/05/19 12:48:54 sthen Exp $ */
+/* $OpenBSD: mkfs.c,v 1.100 2020/05/28 15:48:29 otto Exp $ */
/* $NetBSD: mkfs.c,v 1.25 1995/06/18 21:35:38 cgd Exp $ */
/*
@@ -738,10 +738,10 @@ initcg(int cylno, time_t utime)
dp2 = (struct ufs2_dinode *)(&iobuf[start]);
for (i = MINIMUM(sblock.fs_ipg, 2 * INOPB(&sblock)); i != 0; i--) {
if (sblock.fs_magic == FS_UFS1_MAGIC) {
- dp1->di_gen = (u_int32_t)arc4random();
+ dp1->di_gen = arc4random();
dp1++;
} else {
- dp2->di_gen = (u_int32_t)arc4random();
+ dp2->di_gen = arc4random();
dp2++;
}
}
@@ -754,7 +754,7 @@ initcg(int cylno, time_t utime)
i += sblock.fs_frag) {
dp1 = (struct ufs1_dinode *)(&iobuf[start]);
for (j = 0; j < INOPB(&sblock); j++) {
- dp1->di_gen = (u_int32_t)arc4random();
+ dp1->di_gen = arc4random();
dp1++;
}
wtfs(fsbtodb(&sblock, cgimin(&sblock, cylno) + i),
@@ -983,9 +983,9 @@ iput(union dinode *ip, ino_t ino)
daddr_t d;
if (Oflag <= 1)
- ip->dp1.di_gen = (u_int32_t)arc4random();
+ ip->dp1.di_gen = arc4random();
else
- ip->dp2.di_gen = (u_int32_t)arc4random();
+ ip->dp2.di_gen = arc4random();
rdfs(fsbtodb(&sblock, cgtod(&sblock, 0)), sblock.fs_cgsize,
(char *)&acg);