summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2017-11-18 19:09:40 -0500
committermidipix <writeonce@midipix.org>2017-11-18 19:11:49 -0500
commitf4ed8e1224eb396f71a1c921ee2489a677deaa0d (patch)
tree4ade35982f200b79b5b05a07364e8d3dc1b5257f
parentec6d7a3ad901cf5447353bdee159c99336ac9c2d (diff)
downloadslibtool-f4ed8e1224eb396f71a1c921ee2489a677deaa0d.tar.bz2
slibtool-f4ed8e1224eb396f71a1c921ee2489a677deaa0d.tar.xz
process spawning and forking: use dup2, not dup, in the child process.
-rw-r--r--src/helper/slbt_archive_import.c3
-rw-r--r--src/helper/slbt_dump_machine.c11
2 files changed, 5 insertions, 9 deletions
diff --git a/src/helper/slbt_archive_import.c b/src/helper/slbt_archive_import.c
index 0d3ea52..c45efa4 100644
--- a/src/helper/slbt_archive_import.c
+++ b/src/helper/slbt_archive_import.c
@@ -65,9 +65,8 @@ static void slbt_archive_import_child(
argv[2] = 0;
close(fd[1]);
- close(0);
- if (dup(fd[0]) == 0)
+ if (dup2(fd[0],0) == 0)
execvp(program,argv);
_exit(EXIT_FAILURE);
diff --git a/src/helper/slbt_dump_machine.c b/src/helper/slbt_dump_machine.c
index fe453e6..7f05790 100644
--- a/src/helper/slbt_dump_machine.c
+++ b/src/helper/slbt_dump_machine.c
@@ -33,14 +33,11 @@ static void slbt_dump_machine_child(
argv[2] = 0;
close(fd[0]);
- close(0);
- close(1);
- if ((fd[0] = open("/dev/null",O_RDONLY)))
- _exit(EXIT_FAILURE);
-
- if (dup(fd[1]) == 1)
- execvp(program,argv);
+ if ((fd[0] = open("/dev/null",O_RDONLY)) >= 0)
+ if (dup2(fd[0],0) == 0)
+ if (dup2(fd[1],1) == 1)
+ execvp(program,argv);
_exit(EXIT_FAILURE);
}