Loading...
gen/FreeBSD/exec.c Libc-763.13 Libc-1353.100.2
--- Libc/Libc-763.13/gen/FreeBSD/exec.c
+++ Libc/Libc-1353.100.2/gen/FreeBSD/exec.c
@@ -48,7 +48,11 @@
 #include "un-namespace.h"
 #include "libc_private.h"
 
-extern char **environ;
+#include <crt_externs.h>
+#define environ (*_NSGetEnviron())
+
+int
+_execvpe(const char *name, char * const argv[], char * const envp[]);
 
 int
 execl(const char *name, const char *arg, ...)
@@ -259,8 +263,9 @@
 	}
 	if (eacces)
 		errno = EACCES;
-	else
+	else if (cur)
 		errno = ENOENT;
+	/* else use existing errno from _execve */
 done:
 	return (-1);
 }
@@ -271,7 +276,7 @@
 	return execvPe(name, path, argv, environ);
 }
 
-int
+__private_extern__ int
 _execvpe(const char *name, char * const argv[], char * const envp[])
 {
 	const char *path;