From c28d5418e36482e0f323e4d9869773f3dbee981c Mon Sep 17 00:00:00 2001 From: shaojinchun Date: Sun, 28 Mar 2021 14:17:34 +0800 Subject: [PATCH] sys_execve use param path to open file --- components/lwp/lwp_syscall.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/components/lwp/lwp_syscall.c b/components/lwp/lwp_syscall.c index 351d7fdafe..4c992f19f7 100644 --- a/components/lwp/lwp_syscall.c +++ b/components/lwp/lwp_syscall.c @@ -1976,15 +1976,17 @@ int sys_execve(const char *path, char *const argv[], char *const envp[]) args_info.envc = envc; args_info.envp = kenvp; args_info.size = size; - do + while (1) { - new_page = _load_script(args_info.argv[0], &args_info); - if (new_page) + new_page = _load_script(path, &args_info); + if (!new_page) { - rt_pages_free(page, 0); - page = new_page; + break; } - } while (new_page); + rt_pages_free(page, 0); + page = new_page; + path = args_info.argv[0]; + } /* now load elf */ if ((aux = lwp_argscopy(new_lwp, args_info.argc, args_info.argv, args_info.envp)) == NULL) @@ -1992,7 +1994,7 @@ int sys_execve(const char *path, char *const argv[], char *const envp[]) rt_set_errno(ENOMEM); goto quit; } - ret = lwp_load(args_info.argv[0], new_lwp, RT_NULL, 0, aux); + ret = lwp_load(path, new_lwp, RT_NULL, 0, aux); if (ret == RT_EOK) { int off = 0; -- Gitee