Apply post-1.10.2 fixes, bump version to 1.10.3
[oweals/busybox.git] / shell / hush.c
index 4e6d5009428b77f70e84bbcf7f6cc49bc39d25e9..dcaeed0d72979de8091fd23466d9e51ae03fa1c5 100644 (file)
@@ -699,9 +699,18 @@ static const struct built_in_command bltins[] = {
        BLTIN(NULL, NULL, NULL)
 };
 
+/* Signals are grouped, we handle them in batches */
+static void set_misc_sighandler(void (*handler)(int))
+{
+       bb_signals(0
+               + (1 << SIGINT)
+               + (1 << SIGQUIT)
+               + (1 << SIGTERM)
+               , handler);
+}
+
 #if ENABLE_HUSH_JOB
 
-/* Signals are grouped, we handle them in batches */
 static void set_fatal_sighandler(void (*handler)(int))
 {
        bb_signals(0
@@ -725,14 +734,6 @@ static void set_jobctrl_sighandler(void (*handler)(int))
                + (1 << SIGTTOU)
                , handler);
 }
-static void set_misc_sighandler(void (*handler)(int))
-{
-       bb_signals(0
-               + (1 << SIGINT)
-               + (1 << SIGQUIT)
-               + (1 << SIGTERM)
-               , handler);
-}
 /* SIGCHLD is special and handled separately */
 
 static void set_every_sighandler(void (*handler)(int))
@@ -815,7 +816,6 @@ static void hush_exit(int exitcode)
 
 #define set_fatal_sighandler(handler)   ((void)0)
 #define set_jobctrl_sighandler(handler) ((void)0)
-#define set_misc_sighandler(handler)    ((void)0)
 #define hush_exit(e)                    exit(e)
 
 #endif /* JOB */
@@ -3907,8 +3907,10 @@ int hush_main(int argc, char **argv)
                                /* give up */
                                interactive_fd = 0;
                }
-               if (interactive_fd)
+               if (interactive_fd) {
                        fcntl(interactive_fd, F_SETFD, FD_CLOEXEC);
+                       set_misc_sighandler(SIG_IGN);
+               }
        }
 #endif