Loading...
--- Libc/Libc-1669.40.2/gen/FreeBSD/exec.c
+++ Libc/Libc-825.24/gen/FreeBSD/exec.c
@@ -1,6 +1,4 @@
/*-
- * SPDX-License-Identifier: BSD-3-Clause
- *
* Copyright (c) 1991, 1993
* The Regents of the University of California. All rights reserved.
*
@@ -12,7 +10,7 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
+ * 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
@@ -37,6 +35,7 @@
#include "namespace.h"
#include <sys/param.h>
+#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <unistd.h>
@@ -136,7 +135,9 @@
}
int
-execv(const char *name, char * const *argv)
+execv(name, argv)
+ const char *name;
+ char * const *argv;
{
(void)_execve(name, argv, environ);
return (-1);
@@ -162,7 +163,7 @@
eacces = 0;
/* If it's an absolute or relative path name, it's easy. */
- if (strchr(name, '/')) {
+ if (index(name, '/')) {
bp = name;
cur = NULL;
goto retry;
@@ -221,28 +222,14 @@
case ENOEXEC:
for (cnt = 0; argv[cnt]; ++cnt)
;
-
- /*
- * cnt may be 0 above; always allocate at least
- * 3 entries so that we can at least fit "sh", bp, and
- * the NULL terminator. We can rely on cnt to take into
- * account the NULL terminator in all other scenarios,
- * as we drop argv[0].
- */
- memp = alloca(MAX(3, cnt + 2) * sizeof(char *));
+ memp = alloca((cnt + 2) * sizeof(char *));
if (memp == NULL) {
/* errno = ENOMEM; XXX override ENOEXEC? */
goto done;
}
- if (cnt > 0) {
- memp[0] = argv[0];
- memp[1] = bp;
- bcopy(argv + 1, memp + 2, cnt * sizeof(char *));
- } else {
- memp[0] = "sh";
- memp[1] = bp;
- memp[2] = NULL;
- }
+ memp[0] = "sh";
+ memp[1] = bp;
+ bcopy(argv + 1, memp + 2, cnt * sizeof(char *));
(void)_execve(_PATH_BSHELL,
__DECONST(char **, memp), envp);
goto done;