From c6e39332f675fa10483f58ac5c4df970a7b6bd15 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Wed, 29 Apr 2026 12:18:27 -0400 Subject: delivery_init_platform: return on allocation error --- src/lib/delivery/delivery_init.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/lib/delivery/delivery_init.c') diff --git a/src/lib/delivery/delivery_init.c b/src/lib/delivery/delivery_init.c index c73e7f0..b97b93a 100644 --- a/src/lib/delivery/delivery_init.c +++ b/src/lib/delivery/delivery_init.c @@ -201,6 +201,10 @@ int delivery_init_platform(struct Delivery *ctx) { } for (size_t i = 0; i < DELIVERY_PLATFORM_MAX; i++) { ctx->system.platform[i] = calloc(DELIVERY_PLATFORM_MAXLEN, sizeof(*ctx->system.platform[0])); + if (!ctx->system.platform[i]) { + SYSERROR("Unable to allocate record %zu in platform array\n", i); + return -1; + } } ctx->system.arch = strdup(uts.machine); -- cgit From 4b75777b000602aefd4807c0aad4e27911ed58d1 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Wed, 29 Apr 2026 12:18:59 -0400 Subject: delivery_init: return if platform cannot be established --- src/lib/delivery/delivery_init.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/lib/delivery/delivery_init.c') diff --git a/src/lib/delivery/delivery_init.c b/src/lib/delivery/delivery_init.c index b97b93a..acdddf6 100644 --- a/src/lib/delivery/delivery_init.c +++ b/src/lib/delivery/delivery_init.c @@ -294,7 +294,10 @@ int delivery_init(struct Delivery *ctx, int render_mode) { } // Configure architecture and platform information - delivery_init_platform(ctx); + if (delivery_init_platform(ctx)) { + // memory error + return -1; + } // Create STASIS directory structure delivery_init_dirs_stage1(ctx); -- cgit From 6cf418547c51e885648e028e3ec9e167cc32dec3 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Fri, 1 May 2026 18:58:47 -0400 Subject: terminate platform string after copy --- src/lib/delivery/delivery_init.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/lib/delivery/delivery_init.c') diff --git a/src/lib/delivery/delivery_init.c b/src/lib/delivery/delivery_init.c index acdddf6..5f1c605 100644 --- a/src/lib/delivery/delivery_init.c +++ b/src/lib/delivery/delivery_init.c @@ -222,6 +222,8 @@ int delivery_init_platform(struct Delivery *ctx) { SYSDEBUG("Setting platform"); strncpy(ctx->system.platform[DELIVERY_PLATFORM], uts.sysname, DELIVERY_PLATFORM_MAXLEN - 1); + ctx->system.platform[DELIVERY_PLATFORM][DELIVERY_PLATFORM_MAXLEN - 1] = '\0'; + if (!strcmp(ctx->system.platform[DELIVERY_PLATFORM], "Darwin")) { snprintf(ctx->system.platform[DELIVERY_PLATFORM_CONDA_SUBDIR], DELIVERY_PLATFORM_MAXLEN, "osx-%s", archsuffix); strncpy(ctx->system.platform[DELIVERY_PLATFORM_CONDA_INSTALLER], "MacOSX", DELIVERY_PLATFORM_MAXLEN - 1); -- cgit From c96bee4c1e34fb80453a79ba455ff9eb1c72b6c5 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Tue, 12 May 2026 10:42:29 -0400 Subject: Remove linefeed from error --- src/lib/delivery/delivery_init.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/lib/delivery/delivery_init.c') diff --git a/src/lib/delivery/delivery_init.c b/src/lib/delivery/delivery_init.c index 5f1c605..48124c2 100644 --- a/src/lib/delivery/delivery_init.c +++ b/src/lib/delivery/delivery_init.c @@ -202,7 +202,7 @@ int delivery_init_platform(struct Delivery *ctx) { for (size_t i = 0; i < DELIVERY_PLATFORM_MAX; i++) { ctx->system.platform[i] = calloc(DELIVERY_PLATFORM_MAXLEN, sizeof(*ctx->system.platform[0])); if (!ctx->system.platform[i]) { - SYSERROR("Unable to allocate record %zu in platform array\n", i); + SYSERROR("Unable to allocate record %zu in platform array", i); return -1; } } -- cgit From 6d6a6a1c25672b69ed80985b54a5fd8da2125751 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Tue, 12 May 2026 10:43:17 -0400 Subject: free platform array on error --- src/lib/delivery/delivery_init.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/lib/delivery/delivery_init.c') diff --git a/src/lib/delivery/delivery_init.c b/src/lib/delivery/delivery_init.c index 48124c2..5bc326d 100644 --- a/src/lib/delivery/delivery_init.c +++ b/src/lib/delivery/delivery_init.c @@ -203,6 +203,7 @@ int delivery_init_platform(struct Delivery *ctx) { ctx->system.platform[i] = calloc(DELIVERY_PLATFORM_MAXLEN, sizeof(*ctx->system.platform[0])); if (!ctx->system.platform[i]) { SYSERROR("Unable to allocate record %zu in platform array", i); + guard_array_n_free(ctx->system.platform, i); return -1; } } @@ -210,6 +211,8 @@ int delivery_init_platform(struct Delivery *ctx) { ctx->system.arch = strdup(uts.machine); if (!ctx->system.arch) { // memory error + guard_array_n_free(ctx->system.platform, DELIVERY_PLATFORM_MAX); + ctx->system.platform = NULL; return -1; } -- cgit