aboutsummaryrefslogtreecommitdiffstats
path: root/pseudo_client.c
diff options
context:
space:
mode:
Diffstat (limited to 'pseudo_client.c')
-rw-r--r--pseudo_client.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/pseudo_client.c b/pseudo_client.c
index 1638212..f1ec54d 100644
--- a/pseudo_client.c
+++ b/pseudo_client.c
@@ -403,6 +403,7 @@ client_spawn_server(void) {
} else {
char *base_args[] = { NULL, NULL, NULL };
char **argv;
+ char **new_environ;
int args;
int fd;
@@ -437,9 +438,6 @@ client_spawn_server(void) {
} else {
argv = base_args;
}
- pseudo_dropenv();
- pseudo_debug(4, "calling execve on %s\n", argv[0]);
- /* and now, execute the server */
if (fchdir(pseudo_dir_fd)) {
pseudo_diag("Couldn't change to server dir [%d]: %s\n",
pseudo_dir_fd, strerror(errno));
@@ -458,7 +456,10 @@ client_spawn_server(void) {
if (fd != pseudo_util_debug_fd)
close(fd);
}
- execve(argv[0], argv, environ);
+ /* and now, execute the server */
+ new_environ = pseudo_dropenv(environ);
+ pseudo_debug(4, "calling execve on %s\n", argv[0]);
+ execve(argv[0], argv, new_environ);
pseudo_diag("critical failure: exec of pseudo daemon failed: %s\n", strerror(errno));
exit(1);
}