From d9ce0e78895e5dfa1e57aca76bb93b4b76dc6e74 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Wed, 29 Apr 2026 12:42:46 -0400 Subject: delivery_duplicate: handle platform allocation error --- src/lib/delivery/delivery.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/lib/delivery/delivery.c') diff --git a/src/lib/delivery/delivery.c b/src/lib/delivery/delivery.c index 89074c8..cbc5898 100644 --- a/src/lib/delivery/delivery.c +++ b/src/lib/delivery/delivery.c @@ -1,7 +1,7 @@ #include "delivery.h" #include "conda.h" -struct Delivery *delivery_duplicate(const struct Delivery *ctx) { +struct Delivery *delivery_duplicate(struct Delivery *ctx) { struct Delivery *result = calloc(1, sizeof(*result)); if (!result) { return NULL; @@ -106,6 +106,12 @@ struct Delivery *delivery_duplicate(const struct Delivery *ctx) { } for (size_t i = 0; i < DELIVERY_PLATFORM_MAX; i++) { result->system.platform[i] = strdup_maybe(ctx->system.platform[i]); + if (!result->system.platform[i]) { + SYSERROR("%s", "unable to allocate record in system platform array"); + guard_array_n_free(result->system.platform, DELIVERY_PLATFORM_MAX); + delivery_free(ctx); + return NULL; + } } } -- cgit From c985cdf4019db2957e3073fec11c9b7a9fe3487c Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Wed, 29 Apr 2026 12:43:44 -0400 Subject: delivery_duplicate: free context on error --- src/lib/delivery/delivery.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/lib/delivery/delivery.c') diff --git a/src/lib/delivery/delivery.c b/src/lib/delivery/delivery.c index cbc5898..557a0ed 100644 --- a/src/lib/delivery/delivery.c +++ b/src/lib/delivery/delivery.c @@ -56,12 +56,16 @@ struct Delivery *delivery_duplicate(struct Delivery *ctx) { result->rules._handle = malloc(sizeof(*result->rules._handle)); if (!result->rules._handle) { SYSERROR("unable to allocate space for INIFILE handle"); + SYSERROR("%s", "unable to allocate space for INIFILE handle"); + delivery_free(ctx); return NULL; } result->rules._handle->section = malloc(ctx->rules._handle->section_count * sizeof(**ctx->rules._handle->section)); if (!result->rules._handle->section) { guard_free(result->rules._handle); SYSERROR("unable to allocate space for INIFILE section"); + SYSERROR("%s", "unable to allocate space for INIFILE section"); + delivery_free(ctx); return NULL; } memcpy(result->rules._handle, &ctx->rules._handle, sizeof(*ctx->rules._handle)); @@ -102,6 +106,8 @@ struct Delivery *delivery_duplicate(struct Delivery *ctx) { result->system.platform = malloc(DELIVERY_PLATFORM_MAX * sizeof(*result->system.platform)); if (!result->system.platform) { SYSERROR("unable to allocate space for system platform array"); + SYSERROR("%s", "unable to allocate space for system platform array"); + delivery_free(ctx); return NULL; } for (size_t i = 0; i < DELIVERY_PLATFORM_MAX; i++) { -- cgit From 050c3d13136c7f4ba056383d20105624a1af6357 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Wed, 29 Apr 2026 12:44:03 -0400 Subject: delivery_duplicate: free INI handle --- src/lib/delivery/delivery.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/lib/delivery/delivery.c') diff --git a/src/lib/delivery/delivery.c b/src/lib/delivery/delivery.c index 557a0ed..500bb88 100644 --- a/src/lib/delivery/delivery.c +++ b/src/lib/delivery/delivery.c @@ -257,6 +257,9 @@ void delivery_free(struct Delivery *ctx) { guard_free(ctx->rules.release_fmt); guard_free(ctx->rules.build_name_fmt); guard_free(ctx->rules.build_number_fmt); + if (ctx->rules._handle) { + ini_free(&ctx->rules._handle); + } guard_free(ctx->deploy.docker.test_script); guard_free(ctx->deploy.docker.registry); -- cgit From 1944c5281a29fa02d21338129445dba23d01cc52 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Mon, 11 May 2026 23:27:19 -0400 Subject: Remove linefeed from warning message --- src/lib/delivery/delivery.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/lib/delivery/delivery.c') diff --git a/src/lib/delivery/delivery.c b/src/lib/delivery/delivery.c index 500bb88..dc9e2ce 100644 --- a/src/lib/delivery/delivery.c +++ b/src/lib/delivery/delivery.c @@ -489,7 +489,7 @@ void delivery_defer_packages(struct Delivery *ctx, int type) { } if (!strlist_count(deferred)) { - SYSWARN("No %s packages were filtered by test definitions\n", mode); + SYSWARN("No %s packages were filtered by test definitions", mode); } else { if (DEFER_CONDA == type) { guard_strlist_free(&ctx->conda.conda_packages); -- cgit