From 2048ac1a8e75816e41d745888a3b190596086ea1 Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Fri, 3 Sep 2021 09:42:11 +0200 Subject: [PATCH] storage: fix integer comparisons Signed-off-by: Christian Brauner --- src/lxc/storage/btrfs.c | 10 +++++----- src/lxc/storage/lvm.c | 4 ++-- src/lxc/storage/overlay.c | 4 ++-- src/lxc/storage/storage_utils.c | 5 ++++- src/lxc/storage/zfs.c | 8 ++++---- 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/lxc/storage/btrfs.c b/src/lxc/storage/btrfs.c index 22ba1484c..e0b7586c3 100644 --- a/src/lxc/storage/btrfs.c +++ b/src/lxc/storage/btrfs.c @@ -687,11 +687,11 @@ static void free_btrfs_tree(struct my_btrfs_tree *tree) static bool do_remove_btrfs_children(struct my_btrfs_tree *tree, u64 root_id, const char *path) { - int i, ret; + int ret; char *newpath; size_t len; - for (i = 0; i < tree->num; i++) { + for (int i = 0; i < tree->num; i++) { if (tree->nodes[i].parentid == root_id) { if (!tree->nodes[i].dirname) { WARN("Odd condition: child objid with no name under %s", path); @@ -706,7 +706,7 @@ static bool do_remove_btrfs_children(struct my_btrfs_tree *tree, u64 root_id, } ret = snprintf(newpath, len, "%s/%s", path, tree->nodes[i].dirname); - if (ret < 0 || ret >= len) { + if (ret < 0 || (size_t)ret >= len) { free(newpath); return false; } @@ -739,7 +739,7 @@ static int btrfs_lxc_rm_rf(const char *path) struct btrfs_ioctl_search_header sh; struct btrfs_root_ref *ref; struct my_btrfs_tree *tree; - int ret, e, i; + int ret, e; unsigned long off = 0; u16 name_len; u64 dir_id; @@ -802,7 +802,7 @@ static int btrfs_lxc_rm_rf(const char *path) break; off = 0; - for (i = 0; i < sk->nr_items; i++) { + for (size_t i = 0; i < sk->nr_items; i++) { memcpy(&sh, args.buf + off, sizeof(sh)); off += sizeof(sh); diff --git a/src/lxc/storage/lvm.c b/src/lxc/storage/lvm.c index 9c79565e2..ed53bd086 100644 --- a/src/lxc/storage/lvm.c +++ b/src/lxc/storage/lvm.c @@ -275,10 +275,10 @@ int lvm_compare_lv_attr(const char *path, int pos, const char expected) return 0; len = strlen(output); - while (start < len && output[start] == ' ') + while ((size_t)start < len && output[start] == ' ') start++; - if (start + pos < len && output[start + pos] == expected) + if ((size_t)(start + pos) < len && output[start + pos] == expected) return 1; return 0; diff --git a/src/lxc/storage/overlay.c b/src/lxc/storage/overlay.c index 410b4ff5a..c00ebc344 100644 --- a/src/lxc/storage/overlay.c +++ b/src/lxc/storage/overlay.c @@ -116,7 +116,7 @@ int ovl_clonepaths(struct lxc_storage *orig, struct lxc_storage *new, const char return log_error_errno(-ENOMEM, ENOMEM, "Failed to allocate memory"); ret = snprintf(new->src, len, "overlay:%s:%s", src, delta); - if (ret < 0 || (size_t)ret >= len) + if (ret < 0 || ret >= len) return log_error_errno(-EIO, EIO, "Failed to create string"); } else if (!strcmp(orig->type, "overlayfs") || !strcmp(orig->type, "overlay")) { @@ -467,7 +467,7 @@ int ovl_mount(struct lxc_storage *bdev) lower, work); } - if (ret < 0 || ret >= len || ret2 < 0 || ret2 >= len2) { + if (ret < 0 || (size_t)ret >= len || ret2 < 0 || (size_t)ret2 >= len2) { ERROR("Failed to create string"); free(mntdata); free(dup); diff --git a/src/lxc/storage/storage_utils.c b/src/lxc/storage/storage_utils.c index de82e4d41..d3548d21b 100644 --- a/src/lxc/storage/storage_utils.c +++ b/src/lxc/storage/storage_utils.c @@ -184,6 +184,8 @@ int detect_fs(struct lxc_storage *bdev, char *type, int len) _exit(EXIT_FAILURE); while (getline(&line, &linelen, f) != -1) { + ssize_t nbytes; + sp1 = strchr(line, ' '); if (!sp1) _exit(EXIT_FAILURE); @@ -203,7 +205,8 @@ int detect_fs(struct lxc_storage *bdev, char *type, int len) *sp3 = '\0'; sp2++; - if (write(p[1], sp2, strlen(sp2)) != strlen(sp2)) + nbytes = write(p[1], sp2, strlen(sp2)); + if (nbytes < 0 || (size_t)nbytes != strlen(sp2)) _exit(EXIT_FAILURE); _exit(EXIT_SUCCESS); diff --git a/src/lxc/storage/zfs.c b/src/lxc/storage/zfs.c index b209d79e0..6e3c739af 100644 --- a/src/lxc/storage/zfs.c +++ b/src/lxc/storage/zfs.c @@ -380,7 +380,7 @@ bool zfs_snapshot(struct lxc_conf *conf, struct lxc_storage *orig, len -= snapshot_len; ret = snprintf(snapshot + snapshot_len, len, "@%s", snap_name); - if (ret < 0 || ret >= len) { + if (ret < 0 || (size_t)ret >= len) { ERROR("Failed to create string"); free(snapshot); return false; @@ -514,7 +514,7 @@ int zfs_clonepaths(struct lxc_storage *orig, struct lxc_storage *new, len -= dataset_len - 4; ret = snprintf(new->src + dataset_len + 4, len, "/%s", cname); - if (ret < 0 || ret >= len) { + if (ret < 0 || (size_t)ret >= len) { ERROR("Failed to create string"); return -1; } @@ -539,7 +539,7 @@ int zfs_clonepaths(struct lxc_storage *orig, struct lxc_storage *new, } ret = snprintf(new->dest, len, "%s/%s/rootfs", lxcpath, cname); - if (ret < 0 || ret >= len) { + if (ret < 0 || (size_t)ret >= len) { ERROR("Failed to create string \"%s/%s/rootfs\"", lxcpath, cname); return -1; } @@ -717,7 +717,7 @@ int zfs_create(struct lxc_storage *bdev, const char *dest, const char *n, } ret = snprintf(bdev->src, len, "zfs:%s/%s", zfsroot, n); - if (ret < 0 || ret >= len) { + if (ret < 0 || (size_t)ret >= len) { ERROR("Failed to create string"); return -1; } -- 2.47.2