From c235065608260cdf23bc3aa966bb62701256e64b Mon Sep 17 00:00:00 2001 From: Gavin Hayes Date: Sat, 4 Feb 2023 12:43:43 -0500 Subject: [PATCH] sysv execve remove resource-leaking zipos APE proof of concept --- libc/calls/execve-sysv.c | 7 ------- test/libc/calls/execve_test.c | 12 ------------ 2 files changed, 19 deletions(-) diff --git a/libc/calls/execve-sysv.c b/libc/calls/execve-sysv.c index 01b44e11f..9a3b7d207 100644 --- a/libc/calls/execve-sysv.c +++ b/libc/calls/execve-sysv.c @@ -85,13 +85,6 @@ int sys_execve(const char *prog, char *const argv[], char *const envp[]) { newprog = alloca(PATH_MAX); fd = _weaken(__zipos_uri_to_mem_file)(&uri, newprog); prog = newprog; - if ((fd != -1) && IsApeBinary(prog)) { - flags = fcntl(fd, F_GETFD); - if (flags != -1) { - fcntl(fd, F_SETFD, flags & (~FD_CLOEXEC)); - flags = fcntl(fd, F_GETFD); - } - } } else if (IsFreebsd()) { if ((fd = _weaken(__zipos_uri_to_mem_file)(&uri, NULL)) != -1) { return sys_fexecve(fd, argv, envp); diff --git a/test/libc/calls/execve_test.c b/test/libc/calls/execve_test.c index 6477ced0e..3a05b9fda 100644 --- a/test/libc/calls/execve_test.c +++ b/test/libc/calls/execve_test.c @@ -72,15 +72,3 @@ TEST(execve, ziposELF) { notpossible; EXITS(42); } - -TEST(execve, ziposAPE) { - if (!IsLinux()) { - EXPECT_EQ(-1, execve("/zip/life-nomod.com", (char *const[]){0}, - (char *const[]){0})); - return; - } - SPAWN(fork); - execve("/zip/life-nomod.com", (char *const[]){0}, (char *const[]){0}); - notpossible; - EXITS(42); -}