execve()/creat(): handle NULL env correctly and support for holding executable file so that write access returns ETXTBSY

This commit is contained in:
bgerofi@riken.jp
2014-09-18 21:19:24 +09:00
committed by Balazs Gerofi bgerofi@riken.jp
parent b7088e654a
commit 55aeceb1bf
5 changed files with 103 additions and 9 deletions

View File

@@ -1244,9 +1244,11 @@ SYSCALL_DECLARE(arch_prctl)
SYSCALL_DECLARE(execve)
{
long ret;
char *empty_envp[1] = {NULL};
const char *filename = (const char *)ihk_mc_syscall_arg0(ctx);
char **argv = (char **)ihk_mc_syscall_arg1(ctx);
char **envp = (char **)ihk_mc_syscall_arg2(ctx);
char **envp = (char **)ihk_mc_syscall_arg2(ctx) ?
(char **)ihk_mc_syscall_arg2(ctx) : empty_envp;
char *argv_flat = NULL;
int argv_flat_len = 0;