diff options
author | otto <otto@openbsd.org> | 2020-05-28 15:48:28 +0000 |
---|---|---|
committer | otto <otto@openbsd.org> | 2020-05-28 15:48:28 +0000 |
commit | d06c4e1f5435c136423f9e1463cd963b162d217f (patch) | |
tree | b823f424d20d18dc3f34ad57b3389fdfc4c616a5 /sbin | |
parent | Reduce 'ifa' overloading by renaming some parameters 'address'. (diff) | |
download | wireguard-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.c | 10 | ||||
-rw-r--r-- | sbin/newfs/mkfs.c | 12 |
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); |