@@ -781,7 +781,7 @@ int selinux_restorecon(const char *pathname_orig,
size = getxattr(pathname, RESTORECON_LAST, xattr_value,
fc_digest_len);
- if (!flags.ignore_digest && size == fc_digest_len &&
+ if (!flags.ignore_digest && (size_t)size == fc_digest_len &&
memcmp(fc_digest, xattr_value, fc_digest_len)
== 0) {
selinux_log(SELINUX_INFO,
@@ -59,11 +59,11 @@ static int run_check_digest(char *cmd, char *selabel_digest)
int main(int argc, char **argv)
{
- int backend = 0, rc, opt, i, validate = 0;
+ int backend = 0, rc, opt, validate = 0;
char *baseonly = NULL, *file = NULL, *digest = (char *)1;
char **specfiles = NULL;
unsigned char *sha1_digest = NULL;
- size_t num_specfiles;
+ size_t i, num_specfiles;
char cmd_buf[4096];
char *cmd_ptr;
When building libselinux with gcc and many warning flags, the build fails with the following errors: selinux_restorecon.c: In function ‘selinux_restorecon’: selinux_restorecon.c:784:36: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] if (!flags.ignore_digest && size == fc_digest_len && ^~ selabel_digest.c: In function ‘main’: selabel_digest.c:162:16: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] for (i = 0; i < digest_len; i++) ^ selabel_digest.c:173:17: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] for (i = 0; i < num_specfiles; i++) { ^ clang reports the precise type information of the variables: selinux_restorecon.c:784:36: error: comparison of integers of different signs: 'ssize_t' (aka 'long') and 'size_t' (aka 'unsigned long') [-Werror,-Wsign-compare] if (!flags.ignore_digest && size == fc_digest_len && ~~~~ ^ ~~~~~~~~~~~~~ selabel_digest.c:162:16: error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Werror,-Wsign-compare] for (i = 0; i < digest_len; i++) ~ ^ ~~~~~~~~~~ selabel_digest.c:173:17: error: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Werror,-Wsign-compare] for (i = 0; i < num_specfiles; i++) { ~ ^ ~~~~~~~~~~~~~ Silent the warnings by using size_t where appropriate. Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org> --- libselinux/src/selinux_restorecon.c | 2 +- libselinux/utils/selabel_digest.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)