diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2021-06-13 15:52:34 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2021-06-13 15:52:34 -0400 |
commit | ae15c5abe0bb2d8bd5fd3502721288bcb1a85d59 (patch) | |
tree | 6820851fba0f52ff6be9e96bc0480e328a3bb65d | |
parent | 78e968dd789ca8d1cac8da3715352184bca2a188 (diff) | |
download | bfs-ae15c5abe0bb2d8bd5fd3502721288bcb1a85d59.tar.xz |
spawn: Allow NULL envp for the current environment
-rw-r--r-- | exec.c | 2 | ||||
-rw-r--r-- | spawn.c | 5 | ||||
-rw-r--r-- | spawn.h | 3 |
3 files changed, 8 insertions, 2 deletions
@@ -374,7 +374,7 @@ static int bfs_exec_spawn(const struct bfs_exec *execbuf) { } } - pid = bfs_spawn(execbuf->argv[0], &ctx, execbuf->argv, environ); + pid = bfs_spawn(execbuf->argv[0], &ctx, execbuf->argv, NULL); fail: error = errno; bfs_spawn_destroy(&ctx); @@ -217,6 +217,11 @@ fail: } pid_t bfs_spawn(const char *exe, const struct bfs_spawn *ctx, char **argv, char **envp) { + extern char **environ; + if (!envp) { + envp = environ; + } + // Use a pipe to report errors from the child int pipefd[2]; if (pipe_cloexec(pipefd) != 0) { @@ -100,7 +100,8 @@ int bfs_spawn_addsetrlimit(struct bfs_spawn *ctx, int resource, const struct rli * @param argv * The arguments for the new process. * @param envp - * The environment variables for the new process. + * The environment variables for the new process (NULL for the current + * environment. * @return * The PID of the new process, or -1 on error. */ |