summaryrefslogtreecommitdiffstats
path: root/sbin/fsck_ffs/pass1.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2017-04-21 10:13:07 +0000
committerkib <kib@FreeBSD.org>2017-04-21 10:13:07 +0000
commit046d09e2c2c30fb322d3e758dfdf0aa0617aa9d8 (patch)
tree3023255a20340328c5d2da0743bde841418f7242 /sbin/fsck_ffs/pass1.c
parentc4663e61303fcd5296d114475118bfe286f802b7 (diff)
downloadFreeBSD-src-046d09e2c2c30fb322d3e758dfdf0aa0617aa9d8.zip
FreeBSD-src-046d09e2c2c30fb322d3e758dfdf0aa0617aa9d8.tar.gz
MFC r316852:
In fsck_ffs pass1, prevent the inosused variable from wrapping. PR: 218592
Diffstat (limited to 'sbin/fsck_ffs/pass1.c')
-rw-r--r--sbin/fsck_ffs/pass1.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sbin/fsck_ffs/pass1.c b/sbin/fsck_ffs/pass1.c
index 98d2a05..515dffe 100644
--- a/sbin/fsck_ffs/pass1.c
+++ b/sbin/fsck_ffs/pass1.c
@@ -133,9 +133,14 @@ pass1(void)
*/
if ((preen || inoopt) && usedsoftdep && !rebuildcg) {
cp = &cg_inosused(cgp)[(inosused - 1) / CHAR_BIT];
- for ( ; inosused > 0; inosused -= CHAR_BIT, cp--) {
- if (*cp == 0)
+ for ( ; inosused != 0; cp--) {
+ if (*cp == 0) {
+ if (inosused > CHAR_BIT)
+ inosused -= CHAR_BIT;
+ else
+ inosused = 0;
continue;
+ }
for (i = 1 << (CHAR_BIT - 1); i > 0; i >>= 1) {
if (*cp & i)
break;
@@ -143,8 +148,6 @@ pass1(void)
}
break;
}
- if (inosused < 0)
- inosused = 0;
}
/*
* Allocate inoinfo structures for the allocated inodes.
OpenPOWER on IntegriCloud