From: Christian Brauner Date: Fri, 3 Sep 2021 09:43:05 +0000 (+0200) Subject: utils: fix integer comparisons X-Git-Tag: lxc-5.0.0~92^2~42 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8f76aa9766de595a319aba5478d61aae8ce7d059;p=thirdparty%2Flxc.git utils: fix integer comparisons Signed-off-by: Christian Brauner --- diff --git a/src/lxc/utils.c b/src/lxc/utils.c index c2cfecf88..aab0dda23 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -356,7 +356,8 @@ int sha1sum_file(char *fnam, unsigned char *digest, unsigned int *md_len) __do_free char *buf = NULL; __do_fclose FILE *f = NULL; int ret; - long flen; + ssize_t flen; + ssize_t nbytes; if (!fnam) return -1; @@ -379,7 +380,8 @@ int sha1sum_file(char *fnam, unsigned char *digest, unsigned int *md_len) if (!buf) return log_error_errno(-1, ENOMEM, "Out of memory"); - if (fread(buf, 1, flen, f) != flen) + nbytes = fread(buf, 1, flen, f); + if (nbytes < 0 || nbytes != flen) return log_error_errno(-1, errno, "Failed to read template"); buf[flen] = '\0'; @@ -1815,7 +1817,7 @@ int fix_stdio_permissions(uid_t uid) if (ret) return log_trace_errno(-errno, errno, "Failed to stat \"/dev/null\""); - for (int i = 0; i < ARRAY_SIZE(std_fds); i++) { + for (size_t i = 0; i < ARRAY_SIZE(std_fds); i++) { ret = fstat(std_fds[i], &st); if (ret) { SYSWARN("Failed to stat standard I/O file descriptor %d", std_fds[i]); @@ -1846,13 +1848,13 @@ int fix_stdio_permissions(uid_t uid) bool multiply_overflow(int64_t base, uint64_t mult, int64_t *res) { - if (base > 0 && base > (INT64_MAX / mult)) + if (base > 0 && base > (int64_t)(INT64_MAX / mult)) return false; - if (base < 0 && base < (INT64_MIN / mult)) + if (base < 0 && base < (int64_t)(INT64_MIN / mult)) return false; - *res = base * mult; + *res = (int64_t)(base * mult); return true; }