← Commit list

5fa39d48d

Denys Vlasenko
Denys Vlasenko
2023-10-03
SUCCESS Duration: 153s

Subject

syslogd: fix breakage caused by "daemonize _after_ init" change

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

sysklogd/syslogd.c+5 -4
@@ -956,9 +956,7 @@ static void do_mark(int sig)
}
#endif
-/* Don't inline: prevent struct sockaddr_un to take up space on stack
- * permanently */
-static NOINLINE int create_socket(void)
+static int create_socket(void)
{
struct sockaddr_un sunx;
int sock_fd;
@@ -1008,6 +1006,7 @@ static int try_to_resolve_remote(remoteHost_t *rh)
static int NOINLINE syslogd_init(char **argv)
{
int opts;
+ int fd;
char OPTION_DECL;
#if ENABLE_FEATURE_REMOTE_LOG
llist_t *remoteAddrList = NULL;
@@ -1055,7 +1054,7 @@ static int NOINLINE syslogd_init(char **argv)
G.hostname = safe_gethostname();
*strchrnul(G.hostname, '.') = '\0';
- xmove_fd(create_socket(), STDIN_FILENO);
+ fd = create_socket();
if (opts & OPT_circularlog)
ipcsyslog_init();
@@ -1067,6 +1066,8 @@ static int NOINLINE syslogd_init(char **argv)
bb_daemonize_or_rexec(DAEMON_CHDIR_ROOT, argv);
}
+ xmove_fd(fd, STDIN_FILENO);
+
/* Set up signal handlers (so that they interrupt read()) */
signal_no_SA_RESTART_empty_mask(SIGTERM, record_signo);
signal_no_SA_RESTART_empty_mask(SIGINT, record_signo);