diff --git a/src/syscalls/interfaces/mod.rs b/src/syscalls/interfaces/mod.rs index cac2fd18a6446344e561bd87c29a4403d638499d..3bc3dbc7ccb15e42294ac0160a349b5f8db737c9 100644 --- a/src/syscalls/interfaces/mod.rs +++ b/src/syscalls/interfaces/mod.rs @@ -41,7 +41,12 @@ pub trait SyscallInterface: Send + Sync { let argc = argv.len() as i32; let argv = argv.leak().as_ptr(); - let envv = envv.leak().as_ptr(); + // do we have more than a end marker? If not, return as null pointer + let envv = if envv.len() == 1 { + core::ptr::null::<*const u8>() + } else { + envv.leak().as_ptr() + }; (argc, argv, envv) }