From c89965eb2854db11b7b484b171beae092476ef0b Mon Sep 17 00:00:00 2001 From: James Carter Date: Mon, 1 Jul 2024 14:27:32 -0400 Subject: [PATCH] libselinux: Fix integer comparison issues when compiling for 32-bit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Trying to compile libselinux for 32-bit produces the following error: selinux_restorecon.c:1194:31: error: comparison of integer expressions of different signedness: ‘__fsword_t’ {aka ‘int’} and ‘unsigned int’ [-Werror=sign-compare] 1194 | if (state.sfsb.f_type == RAMFS_MAGIC || state.sfsb.f_type == TMPFS_MAGIC || | ^~ Since RAMFS_MAGIC = 0x858458f6 == 2240043254, which > 2^31, but < 2^32, cast both as uint32_t for the comparison. Reported-by: Daniel Schepler Signed-off-by: James Carter Reviewed-by: Christian Göttsche Acked-by: Stephen Smalley --- libselinux/src/selinux_restorecon.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libselinux/src/selinux_restorecon.c b/libselinux/src/selinux_restorecon.c index 2422b415..93bd7779 100644 --- a/libselinux/src/selinux_restorecon.c +++ b/libselinux/src/selinux_restorecon.c @@ -1191,8 +1191,8 @@ static int selinux_restorecon_common(const char *pathname_orig, } /* Skip digest on in-memory filesystems and /sys */ - if (state.sfsb.f_type == RAMFS_MAGIC || state.sfsb.f_type == TMPFS_MAGIC || - state.sfsb.f_type == SYSFS_MAGIC) + if ((uint32_t)state.sfsb.f_type == (uint32_t)RAMFS_MAGIC || + state.sfsb.f_type == TMPFS_MAGIC || state.sfsb.f_type == SYSFS_MAGIC) state.setrestorecondigest = false; if (state.flags.set_xdev) @@ -1490,7 +1490,7 @@ int selinux_restorecon_xattr(const char *pathname, unsigned int xattr_flags, if (!recurse) { if (statfs(pathname, &sfsb) == 0) { - if (sfsb.f_type == RAMFS_MAGIC || + if ((uint32_t)sfsb.f_type == (uint32_t)RAMFS_MAGIC || sfsb.f_type == TMPFS_MAGIC) return 0; } @@ -1525,7 +1525,7 @@ int selinux_restorecon_xattr(const char *pathname, unsigned int xattr_flags, continue; case FTS_D: if (statfs(ftsent->fts_path, &sfsb) == 0) { - if (sfsb.f_type == RAMFS_MAGIC || + if ((uint32_t)sfsb.f_type == (uint32_t)RAMFS_MAGIC || sfsb.f_type == TMPFS_MAGIC) continue; } -- 2.45.2