]> xenbits.xensource.com Git - xen.git/commitdiff
libfsimage/xfs: Amend mask32lo() to allow the value 32
authorAlejandro Vallejo <alejandro.vallejo@cloud.com>
Thu, 14 Sep 2023 12:22:51 +0000 (13:22 +0100)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Wed, 27 Sep 2023 15:30:18 +0000 (16:30 +0100)
agblklog could plausibly be 32, but that would overflow this shift.
Perform the shift as ULL and cast to u32 at the end instead.

This is part of XSA-443 / CVE-2023-34325

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
(cherry picked from commit ddc45e4eea946bb373a4b4a60c84bf9339cf413b)

tools/libfsimage/xfs/fsys_xfs.c

index 2800699f598587e1ea01ef5a9d47955d95ca0047..4720bb4505c8c72fb0b5afe981434e944a887f01 100644 (file)
@@ -60,7 +60,7 @@ static struct xfs_info xfs;
 #define inode          ((xfs_dinode_t *)((char *)FSYS_BUF + 8192))
 #define icore          (inode->di_core)
 
-#define        mask32lo(n)     (((xfs_uint32_t)1 << (n)) - 1)
+#define        mask32lo(n)     ((xfs_uint32_t)((1ull << (n)) - 1))
 
 #define        XFS_INO_MASK(k)         ((xfs_uint32_t)((1ULL << (k)) - 1))
 #define        XFS_INO_OFFSET_BITS     xfs.inopblog