]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
privsep: move setting signals to after clearing eloop
authorRoy Marples <roy@marples.name>
Wed, 27 Jan 2021 14:11:52 +0000 (14:11 +0000)
committerRoy Marples <roy@marples.name>
Wed, 27 Jan 2021 14:11:52 +0000 (14:11 +0000)
src/privsep.c

index d5c7c5627c43d1e967691dc7e33454d2f86122c1..23ed9e7ed9d7cee88e3ff08145a44828f0d9fa67 100644 (file)
@@ -369,7 +369,15 @@ ps_dostart(struct dhcpcd_ctx *ctx,
                ctx->fork_fd = -1;
        }
        pidfile_clean();
+
        eloop_clear(ctx->eloop);
+       eloop_signal_set_cb(ctx->eloop,
+           dhcpcd_signals, dhcpcd_signals_len, signal_cb, ctx);
+       /* ctx->sigset aready has the initial sigmask set in main() */
+       if (eloop_signal_mask(ctx->eloop, NULL) == -1) {
+               logerr("%s: eloop_signal_mask", __func__);
+               goto errexit;
+       }
 
        /* We are not root */
        if (priv_fd != &ctx->ps_root_fd) {
@@ -393,15 +401,6 @@ ps_dostart(struct dhcpcd_ctx *ctx,
                ctx->ps_inet_fd = -1;
        }
 
-       eloop_signal_set_cb(ctx->eloop,
-           dhcpcd_signals, dhcpcd_signals_len, signal_cb, ctx);
-
-       /* ctx->sigset aready has the initial sigmask set in main() */
-       if (eloop_signal_mask(ctx->eloop, NULL) == -1) {
-               logerr("%s: eloop_signal_mask", __func__);
-               goto errexit;
-       }
-
        if (eloop_event_add(ctx->eloop, *priv_fd, recv_msg, recv_ctx) == -1)
        {
                logerr("%s: eloop_event_add", __func__);