aboutsummaryrefslogtreecommitdiffstats
path: root/package/busybox/busybox-1.15.0-inetd.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/busybox/busybox-1.15.0-inetd.patch')
-rw-r--r--package/busybox/busybox-1.15.0-inetd.patch58
1 files changed, 0 insertions, 58 deletions
diff --git a/package/busybox/busybox-1.15.0-inetd.patch b/package/busybox/busybox-1.15.0-inetd.patch
deleted file mode 100644
index c8d241c81..000000000
--- a/package/busybox/busybox-1.15.0-inetd.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff -urpN busybox-1.15.0/networking/inetd.c busybox-1.15.0-inetd/networking/inetd.c
---- busybox-1.15.0/networking/inetd.c 2009-08-21 00:26:14.000000000 +0200
-+++ busybox-1.15.0-inetd/networking/inetd.c 2009-09-04 03:50:03.000000000 +0200
-@@ -1031,10 +1031,10 @@ static void reap_child(int sig UNUSED_PA
- continue;
- /* One of our "wait" services */
- if (WIFEXITED(status) && WEXITSTATUS(status))
-- bb_error_msg("%s: exit status 0x%x",
-+ bb_error_msg("%s: exit status %u",
- sep->se_program, WEXITSTATUS(status));
- else if (WIFSIGNALED(status))
-- bb_error_msg("%s: exit signal 0x%x",
-+ bb_error_msg("%s: exit signal %u",
- sep->se_program, WTERMSIG(status));
- sep->se_wait = 1;
- add_fd_to_set(sep->se_fd);
-@@ -1119,7 +1119,12 @@ int inetd_main(int argc UNUSED_PARAM, ch
- else
- bb_sanitize_stdio();
- if (!(opt & 4)) {
-- openlog(applet_name, LOG_PID, LOG_DAEMON);
-+ /* LOG_NDELAY: connect to syslog daemon NOW.
-+ * Otherwise, we may open syslog socket
-+ * in vforked child, making opened fds and syslog()
-+ * internal state inconsistent.
-+ * This was observed to leak file descriptors. */
-+ openlog(applet_name, LOG_PID | LOG_NDELAY, LOG_DAEMON);
- logmode = LOGMODE_SYSLOG;
- }
-
-@@ -1355,17 +1360,23 @@ int inetd_main(int argc UNUSED_PARAM, ch
- if (rlim_ofile.rlim_cur != rlim_ofile_cur)
- if (setrlimit(RLIMIT_NOFILE, &rlim_ofile) < 0)
- bb_perror_msg("setrlimit");
-- closelog();
-+
-+ /* closelog(); - WRONG. we are after vfork,
-+ * this may confuse syslog() internal state.
-+ * Let's hope libc sets syslog fd to CLOEXEC...
-+ */
- xmove_fd(ctrl, STDIN_FILENO);
- xdup2(STDIN_FILENO, STDOUT_FILENO);
- /* manpages of inetd I managed to find either say
- * that stderr is also redirected to the network,
- * or do not talk about redirection at all (!) */
-- xdup2(STDIN_FILENO, STDERR_FILENO);
-- /* NB: among others, this loop closes listening socket
-+ if (!sep->se_wait) /* only for usual "tcp nowait" */
-+ xdup2(STDIN_FILENO, STDERR_FILENO);
-+ /* NB: among others, this loop closes listening sockets
- * for nowait stream children */
- for (sep2 = serv_list; sep2; sep2 = sep2->se_next)
-- maybe_close(sep2->se_fd);
-+ if (sep2->se_fd != ctrl)
-+ maybe_close(sep2->se_fd);
- sigaction_set(SIGPIPE, &saved_pipe_handler);
- restore_sigmask(&omask);
- BB_EXECVP(sep->se_program, sep->se_argv);