summaryrefslogtreecommitdiffhomepage
path: root/networking/sendmail.c
diff options
context:
space:
mode:
Diffstat (limited to 'networking/sendmail.c')
-rw-r--r--networking/sendmail.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/networking/sendmail.c b/networking/sendmail.c
index c195cc021..1c23ca290 100644
--- a/networking/sendmail.c
+++ b/networking/sendmail.c
@@ -120,6 +120,15 @@ static void signal_handler(int signo)
#undef err
}
+/* libbb candidate */
+static pid_t vfork_or_die(void)
+{
+ pid_t pid = vfork();
+ if (pid < 0)
+ bb_perror_msg_and_die("vfork");
+ return pid;
+}
+
static void launch_helper(const char **argv)
{
// setup vanilla unidirectional pipes interchange
@@ -128,7 +137,7 @@ static void launch_helper(const char **argv)
xpipe(pipes);
xpipe(pipes+2);
- helper_pid = xvfork();
+ helper_pid = vfork_or_die();
idx = (!helper_pid) * 2;
xdup2(pipes[idx], STDIN_FILENO);
xdup2(pipes[3-idx], STDOUT_FILENO);