From d2754100864d6de14a4758bfea5d8e4401120c69 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Fri, 17 Oct 2025 10:15:24 +0100 Subject: [PATCH 1/5] dissect: drop leftover assert This was refactored, and the assert is now wrongly placed. Drop it to fix coverity warning. Follow-up for dfdeb0b1cbb05a213f0965eedfe0e7ef06cd39d3 CID#1639975 --- src/shared/dissect-image.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c index b597ee263a..f5f3c8dfe8 100644 --- a/src/shared/dissect-image.c +++ b/src/shared/dissect-image.c @@ -4555,8 +4555,6 @@ int verity_dissect_and_mount( _cleanup_strv_free_ char **extension_release = NULL; ImageClass class = IMAGE_SYSEXT; - assert(!isempty(extension_release_data->os_release_id)); - r = load_extension_release_pairs(dest, required_class >= 0 ? required_class : IMAGE_SYSEXT, dissected_image->image_name, relax_extension_release_check, &extension_release); if (r == -ENOENT) { if (required_class >= 0) From 8240a0942bad98fe5a3129bb86d4c0d0798be320 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Fri, 17 Oct 2025 10:19:49 +0100 Subject: [PATCH 2/5] blockdev-list: add overflow check assert Fixes coverity warning CID#1630794 --- src/shared/blockdev-list.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/shared/blockdev-list.c b/src/shared/blockdev-list.c index 16a0e2bb25..57f80bb111 100644 --- a/src/shared/blockdev-list.c +++ b/src/shared/blockdev-list.c @@ -111,7 +111,8 @@ int blockdev_list(BlockDevListFlags flags, BlockDevice **ret_devices, size_t *re if (r < 0) log_debug_errno(r, "Failed to acquire size of device '%s', ignoring: %m", node); else - size *= 512; /* the 'size' sysattr is always in multiples of 512, even on 4K sector block devices! */ + /* the 'size' sysattr is always in multiples of 512, even on 4K sector block devices! */ + assert_se(MUL_ASSIGN_SAFE(&size, 512)); /* Overflow check for coverity */ if (size == 0 && FLAGS_SET(flags, BLOCKDEV_LIST_IGNORE_EMPTY)) { log_debug("Device '%s' has a zero size, assuming drive without a medium, skipping.", node); From 05d45875f74cfb7455d127a5229dca440986e689 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Fri, 17 Oct 2025 10:23:28 +0100 Subject: [PATCH 3/5] efivars: fix potential memory leak If 'ret' is not passed, 'x' is leaked Follow-up for c8d60ae79d1763c6ef16fdb306b65d909a769de8 CID#1621673 --- src/basic/efivars.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/basic/efivars.c b/src/basic/efivars.c index 86544d1de2..99c47e8ce2 100644 --- a/src/basic/efivars.c +++ b/src/basic/efivars.c @@ -155,9 +155,8 @@ int efi_get_variable( } int efi_get_variable_string(const char *variable, char **ret) { - _cleanup_free_ void *s = NULL; + _cleanup_free_ void *s = NULL, *x = NULL; size_t ss = 0; - char *x; int r; assert(variable); @@ -171,7 +170,7 @@ int efi_get_variable_string(const char *variable, char **ret) { return -ENOMEM; if (ret) - *ret = x; + *ret = TAKE_PTR(x); return 0; } From 8112069be0aed99cc56777800481303d4f613550 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Fri, 17 Oct 2025 11:13:00 +0100 Subject: [PATCH 4/5] bpf: do not leak dlopen object CID#1609833 --- src/shared/bpf-dlopen.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/shared/bpf-dlopen.c b/src/shared/bpf-dlopen.c index e84b435f48..1c64498044 100644 --- a/src/shared/bpf-dlopen.c +++ b/src/shared/bpf-dlopen.c @@ -49,6 +49,8 @@ DLSYM_PROTOTYPE(ring_buffer__free) = NULL; DLSYM_PROTOTYPE(ring_buffer__new) = NULL; DLSYM_PROTOTYPE(ring_buffer__poll) = NULL; +static void* bpf_dl = NULL; + /* new symbols available from libbpf 0.7.0 */ int (*sym_bpf_map_create)(enum bpf_map_type, const char *, __u32, __u32, __u32, const struct bpf_map_create_opts *); struct bpf_map* (*sym_bpf_object__next_map)(const struct bpf_object *obj, const struct bpf_map *map); @@ -71,8 +73,8 @@ static int bpf_print_func(enum libbpf_print_level level, const char *fmt, va_lis } int dlopen_bpf_full(int log_level) { + _cleanup_(dlclosep) void *dl = NULL; static int cached = 0; - void *dl; int r; if (cached != 0) @@ -177,6 +179,8 @@ int dlopen_bpf_full(int log_level) { REENABLE_WARNING; + bpf_dl = TAKE_PTR(dl); + return cached = true; } From d0a066a1a4a391f629f7f52b5005103f8daf411f Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Fri, 17 Oct 2025 11:42:20 +0100 Subject: [PATCH 5/5] test: avoid divide-by-zero coverity warning CID#1587762 --- src/test/test-json.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/test-json.c b/src/test/test-json.c index 91e14a4726..a3e0c88e40 100644 --- a/src/test/test-json.c +++ b/src/test/test-json.c @@ -667,6 +667,7 @@ static void test_float_match(sd_json_variant *v) { assert_se(fabs(1.0 - (DBL_MIN / 2 / sd_json_variant_real(sd_json_variant_by_index(v, 9)))) <= delta); assert_se(sd_json_variant_is_real(sd_json_variant_by_index(v, 10)) && !sd_json_variant_is_integer(sd_json_variant_by_index(v, 10))); + assert_se(!iszero_safe(sd_json_variant_real(sd_json_variant_by_index(v, 10)))); assert_se(fabs(1.0 - (-DBL_MIN / 2 / sd_json_variant_real(sd_json_variant_by_index(v, 10)))) <= delta); }