diff --git a/src/header/unistd/mod.rs b/src/header/unistd/mod.rs index 142e155c5a..290b84e2df 100644 --- a/src/header/unistd/mod.rs +++ b/src/header/unistd/mod.rs @@ -1203,12 +1203,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;