aboutsummaryrefslogtreecommitdiff
path: root/sys/ufs/ffs/ffs_subr.c
diff options
context:
space:
mode:
authorKirk McKusick <mckusick@FreeBSD.org>2018-07-07 19:11:43 +0000
committerKirk McKusick <mckusick@FreeBSD.org>2018-07-07 19:11:43 +0000
commite1c27cf7d6339702549a745eba526b3aba239b44 (patch)
treecd3285e8aa2f02bed1bd40fad7b12874de901e57 /sys/ufs/ffs/ffs_subr.c
parent31ff8defe34b407a9e44dc132d928148652b24ca (diff)
downloadsrc-e1c27cf7d6339702549a745eba526b3aba239b44.tar.gz
src-e1c27cf7d6339702549a745eba526b3aba239b44.zip
Import commit from NetBSD with checkin message:
Avoid Undefined Behavior in ffs_clusteracct() Change the type of 'bit' variable from int to unsigned int and use unsigned values consistently. sys/ufs/ffs/ffs_subr.c:336:10, shift exponent -1 is negative Detected with Kernel Undefined Behavior Sanitizer. Reported by <Harry Pantazis> Submitted by: Pedro Giffuni
Notes
Notes: svn path=/head/; revision=336074
Diffstat (limited to 'sys/ufs/ffs/ffs_subr.c')
-rw-r--r--sys/ufs/ffs/ffs_subr.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/ufs/ffs/ffs_subr.c b/sys/ufs/ffs/ffs_subr.c
index 34afc51a4726..c7490568a764 100644
--- a/sys/ufs/ffs/ffs_subr.c
+++ b/sys/ufs/ffs/ffs_subr.c
@@ -473,7 +473,8 @@ ffs_clusteracct(struct fs *fs, struct cg *cgp, ufs1_daddr_t blkno, int cnt)
int32_t *sump;
int32_t *lp;
u_char *freemapp, *mapp;
- int i, start, end, forw, back, map, bit;
+ int i, start, end, forw, back, map;
+ u_int bit;
if (fs->fs_contigsumsize <= 0)
return;
@@ -495,7 +496,7 @@ ffs_clusteracct(struct fs *fs, struct cg *cgp, ufs1_daddr_t blkno, int cnt)
end = cgp->cg_nclusterblks;
mapp = &freemapp[start / NBBY];
map = *mapp++;
- bit = 1 << (start % NBBY);
+ bit = 1U << (start % NBBY);
for (i = start; i < end; i++) {
if ((map & bit) == 0)
break;
@@ -516,7 +517,7 @@ ffs_clusteracct(struct fs *fs, struct cg *cgp, ufs1_daddr_t blkno, int cnt)
end = -1;
mapp = &freemapp[start / NBBY];
map = *mapp--;
- bit = 1 << (start % NBBY);
+ bit = 1U << (start % NBBY);
for (i = start; i > end; i--) {
if ((map & bit) == 0)
break;
@@ -524,7 +525,7 @@ ffs_clusteracct(struct fs *fs, struct cg *cgp, ufs1_daddr_t blkno, int cnt)
bit >>= 1;
} else {
map = *mapp--;
- bit = 1 << (NBBY - 1);
+ bit = 1U << (NBBY - 1);
}
}
back = start - i;