From db9326896845ad268436d22c0422e769af0b1a3c Mon Sep 17 00:00:00 2001 From: Benny Baumann Date: Thu, 5 May 2022 20:01:30 +0200 Subject: Ensure buffer for environment is large enough on OpenBSD --- openbsd/Platform.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/openbsd/Platform.c b/openbsd/Platform.c index db9780c2..b222bee0 100644 --- a/openbsd/Platform.c +++ b/openbsd/Platform.c @@ -269,7 +269,13 @@ char* Platform_getProcessEnv(pid_t pid) { for (char** p = ptr; *p; p++) { size_t len = strlen(*p) + 1; - if (size + len > capacity) { + while (size + len > capacity) { + if (capacity > (SIZE_MAX / 2)) { + free(env); + env = NULL; + goto end; + } + capacity *= 2; env = xRealloc(env, capacity); } @@ -285,6 +291,7 @@ char* Platform_getProcessEnv(pid_t pid) { env[size + 1] = 0; } +end: (void) kvm_close(kt); return env; } -- cgit v1.2.3