From: Darrick J. Wong Date: Fri, 2 Feb 2018 15:32:43 +0000 (-0600) Subject: misc: ubsan fixes X-Git-Tag: v4.15.0-rc1~47 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=25f9772ab25ae1e35869ed71ecea951792e3fa10;p=thirdparty%2Fxfsprogs-dev.git misc: ubsan fixes Fix a few things the undefined behavior sanitizer complained about. Signed-off-by: Darrick J. Wong Reviewed-by: Eric Sandeen Signed-off-by: Eric Sandeen --- diff --git a/db/bit.c b/db/bit.c index a20b6ba5f..bf8d80efb 100644 --- a/db/bit.c +++ b/db/bit.c @@ -112,11 +112,11 @@ getbitval( #if __BYTE_ORDER == LITTLE_ENDIAN if (i == 0 && signext && nbits < 64) rval = -1LL << nbits; - rval |= 1LL << (nbits - i - 1); + rval |= 1ULL << (nbits - i - 1); #else if ((i == (nbits - 1)) && signext && nbits < 64) rval |= (-1LL << nbits); - rval |= 1LL << (nbits - i - 1); + rval |= 1ULL << (nbits - i - 1); #endif } } diff --git a/repair/sb.c b/repair/sb.c index f40cdeab2..3dc6538bb 100644 --- a/repair/sb.c +++ b/repair/sb.c @@ -89,11 +89,11 @@ verify_sb_blocksize(xfs_sb_t *sb) /* check to make sure blocksize is legal 2^N, 9 <= N <= 16 */ if (sb->sb_blocksize == 0) return XR_BAD_BLOCKSIZE; - if (sb->sb_blocksize != (1 << sb->sb_blocklog)) - return XR_BAD_BLOCKLOG; if (sb->sb_blocklog < XFS_MIN_BLOCKSIZE_LOG || sb->sb_blocklog > XFS_MAX_BLOCKSIZE_LOG) return XR_BAD_BLOCKLOG; + if (sb->sb_blocksize != (1 << sb->sb_blocklog)) + return XR_BAD_BLOCKLOG; return 0; }