]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
utils: fix integer comparisons
authorChristian Brauner <christian.brauner@ubuntu.com>
Fri, 3 Sep 2021 09:43:05 +0000 (11:43 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Fri, 3 Sep 2021 11:01:42 +0000 (13:01 +0200)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/utils.c

index c2cfecf887dfca3d0e3aa402a651686588a1dc19..aab0dda238d10dcea4178016818ebe4a96ae7339 100644 (file)
@@ -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;
 }