From 6a7fb703c99d693ab452591cf5bd55706f15c425 Mon Sep 17 00:00:00 2001 From: Marsman Date: Tue, 10 Feb 2026 11:26:14 +0000 Subject: [PATCH] fix: adjust memory allocation for argv to include null terminator --- src/header/unistd/mod.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/header/unistd/mod.rs b/src/header/unistd/mod.rs index c2e03718e1..06f6c22521 100644 --- a/src/header/unistd/mod.rs +++ b/src/header/unistd/mod.rs @@ -1210,12 +1210,13 @@ unsafe fn with_argv( stack.as_mut_slice() } else if argc < 4096 { // TODO: Use ARG_MAX, not this hardcoded constant - let ptr = unsafe { crate::header::stdlib::malloc(argc * mem::size_of::<*const c_char>()) }; + let ptr = + unsafe { crate::header::stdlib::malloc((argc + 1) * mem::size_of::<*const c_char>()) }; if ptr.is_null() { platform::ERRNO.set(ENOMEM); return -1; } - unsafe { slice::from_raw_parts_mut(ptr.cast::>(), argc) } + unsafe { slice::from_raw_parts_mut(ptr.cast::>(), argc + 1) } } else { platform::ERRNO.set(E2BIG); return -1;