fix new environment always being null with execle
authorRich Felker <dalias@aerifal.cx>
Thu, 3 Oct 2013 14:16:01 +0000 (10:16 -0400)
committerRich Felker <dalias@aerifal.cx>
Thu, 3 Oct 2013 14:16:01 +0000 (10:16 -0400)
the va_arg call for the argv[]-terminating null pointer was missing,
so this pointer was being wrongly used as the environment pointer.

issue reported by Timo Teräs. proposed patch slightly modified to
simplify the resulting code.

src/process/execle.c

index 6490836612b2573783a8c5b3f92963e92addec63..6f2ec055bf497ab26770fa44b5dfc6c539df81a8 100644 (file)
@@ -14,9 +14,8 @@ int execle(const char *path, const char *argv0, ...)
                char **envp;
                va_start(ap, argv0);
                argv[0] = (char *)argv0;
-               for (i=1; i<argc; i++)
+               for (i=1; i<=argc; i++)
                        argv[i] = va_arg(ap, char *);
-               argv[i] = NULL;
                envp = va_arg(ap, char **);
                return execve(path, argv, envp);
        }