From 9a299b68f0037d21c730e56057f5393c12d32388 Mon Sep 17 00:00:00 2001 From: Chen Chengjun Date: Wed, 31 Jul 2024 15:36:35 +0800 Subject: [PATCH] Make the behavior of sys_execve be consistent with Linux --- kernel/aster-nix/src/syscall/execve.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel/aster-nix/src/syscall/execve.rs b/kernel/aster-nix/src/syscall/execve.rs index 3365ad1ec..5eecab1c8 100644 --- a/kernel/aster-nix/src/syscall/execve.rs +++ b/kernel/aster-nix/src/syscall/execve.rs @@ -159,6 +159,10 @@ fn read_cstring_vec( max_string_len: usize, ) -> Result> { let mut res = Vec::new(); + // On Linux, argv pointer and envp pointer can be specified as NULL. + if array_ptr == 0 { + return Ok(res); + } let mut read_addr = array_ptr; let mut find_null = false; for _ in 0..max_string_number {