fix rejection of dns responses with pointers past 512 byte offset
[musl] / src / process / fexecve.c
index 6507b42..554c198 100644 (file)
@@ -1,10 +1,13 @@
+#define _GNU_SOURCE
 #include <unistd.h>
 #include <errno.h>
-
-void __procfdname(char *, unsigned);
+#include <fcntl.h>
+#include "syscall.h"
 
 int fexecve(int fd, char *const argv[], char *const envp[])
 {
+       int r = __syscall(SYS_execveat, fd, "", argv, envp, AT_EMPTY_PATH);
+       if (r != -ENOSYS) return __syscall_ret(r);
        char buf[15 + 3*sizeof(int)];
        __procfdname(buf, fd);
        execve(buf, argv, envp);