From 80033cef5b7760ec4d48512eb75fa1810fd6c8e4 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 24 Jan 2025 22:46:35 +0900 Subject: [PATCH 1/2] delta: use r for storing error code --- src/delta/delta.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/delta/delta.c b/src/delta/delta.c index c7cf6c9b0bb..e93b2ba6199 100644 --- a/src/delta/delta.c +++ b/src/delta/delta.c @@ -226,7 +226,6 @@ static int enumerate_dir_d( STRV_FOREACH(file, list) { OrderedHashmap *h; - int k; char *p; char *d; @@ -239,23 +238,23 @@ static int enumerate_dir_d( d = p + strlen(toppath) + 1; log_debug("Adding at top: %s %s %s", d, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), p); - k = ordered_hashmap_ensure_put(top, &string_hash_ops_value_free, d, p); - if (k >= 0) { + r = ordered_hashmap_ensure_put(top, &string_hash_ops_value_free, d, p); + if (r >= 0) { p = strdup(p); if (!p) return -ENOMEM; d = p + strlen(toppath) + 1; - } else if (k != -EEXIST) { + } else if (r != -EEXIST) { free(p); - return k; + return r; } log_debug("Adding at bottom: %s %s %s", d, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), p); free(ordered_hashmap_remove(*bottom, d)); - k = ordered_hashmap_ensure_put(bottom, &string_hash_ops_value_free, d, p); - if (k < 0) { + r = ordered_hashmap_ensure_put(bottom, &string_hash_ops_value_free, d, p); + if (r < 0) { free(p); - return k; + return r; } h = ordered_hashmap_get(*drops, unit); @@ -275,11 +274,11 @@ static int enumerate_dir_d( log_debug("Adding to drops: %s %s %s %s %s", unit, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), basename(p), special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), p); - k = ordered_hashmap_put(h, basename(p), p); - if (k < 0) { + r = ordered_hashmap_put(h, basename(p), p); + if (r < 0) { free(p); - if (k != -EEXIST) - return k; + if (r != -EEXIST) + return r; } } return 0; From facf5d6578afc7fe9b42b9b0d0a959c97464be6f Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 24 Jan 2025 22:46:55 +0900 Subject: [PATCH 2/2] delta: add missing error check Fixes CID#1590726. --- src/delta/delta.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/delta/delta.c b/src/delta/delta.c index e93b2ba6199..62f4be578f4 100644 --- a/src/delta/delta.c +++ b/src/delta/delta.c @@ -262,7 +262,11 @@ static int enumerate_dir_d( h = ordered_hashmap_new(&string_hash_ops_value_free); if (!h) return -ENOMEM; - ordered_hashmap_ensure_put(drops, &drop_hash_ops, unit, h); + r = ordered_hashmap_ensure_put(drops, &drop_hash_ops, unit, h); + if (r < 0) { + ordered_hashmap_free(h); + return r; + } unit = strdup(unit); if (!unit) return -ENOMEM;