63 lines
2.4 KiB
Diff
63 lines
2.4 KiB
Diff
|
From c89965eb2854db11b7b484b171beae092476ef0b Mon Sep 17 00:00:00 2001
|
|||
|
From: James Carter <jwcart2@gmail.com>
|
|||
|
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 <jwcart2@gmail.com>
|
|||
|
Reviewed-by: Christian Göttsche <cgzones@googlemail.com>
|
|||
|
Acked-by: Stephen Smalley <stephen.smalley.work@gmail.com>
|
|||
|
---
|
|||
|
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
|
|||
|
|