about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--posix/execvp.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/posix/execvp.c b/posix/execvp.c
index 27568294a5..963b769fca 100644
--- a/posix/execvp.c
+++ b/posix/execvp.c
@@ -79,6 +79,7 @@ execvp (file, argv)
       int got_eacces = 0;
       char *path, *p, *name;
       size_t len;
+      size_t pathlen;
 
       path = getenv ("PATH");
       if (path == NULL)
@@ -93,9 +94,10 @@ execvp (file, argv)
 	}
 
       len = strlen (file) + 1;
-      name = __alloca (strlen (path) + len + 1);
+      pathlen = strlen (path);
+      name = __alloca (pathlen + len + 1);
       /* Copy the file name at the top.  */
-      name = (char *) memcpy (name - len, file, len);
+      name = (char *) memcpy (name + pathlen + 1, file, len);
       /* And add the slash.  */
       *--name = '/';