ash: reset SIGHUP earlier: allows HUP traps in .profile, closes 13371

function                                             old     new   delta
ash_main                                            1188    1203     +15

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2020-12-13 16:36:28 +01:00
parent 6c5f4296dc
commit 31df5a3eee

View File

@ -14340,6 +14340,17 @@ procargs(char **argv)
shellparam.nparam++; shellparam.nparam++;
xargv++; xargv++;
} }
/* Interactive bash re-enables SIGHUP which is SIG_IGNed on entry.
* Try:
* trap '' hup; bash; echo RET # type "kill -hup $$", see SIGHUP having effect
* trap '' hup; bash -c 'kill -hup $$; echo ALIVE' # here SIGHUP is SIG_IGNed
* NB: must do it before setting up signals (in optschanged())
* and reading .profile etc (after we return from here):
*/
if (iflag)
signal(SIGHUP, SIG_DFL);
optschanged(); optschanged();
return login_sh; return login_sh;
@ -14510,14 +14521,6 @@ int ash_main(int argc UNUSED_PARAM, char **argv)
} }
#endif #endif
state4: /* XXX ??? - why isn't this before the "if" statement */ state4: /* XXX ??? - why isn't this before the "if" statement */
/* Interactive bash re-enables SIGHUP which is SIG_IGNed on entry.
* Try:
* trap '' hup; bash; echo RET # type "kill -hup $$", see SIGHUP having effect
* trap '' hup; bash -c 'kill -hup $$; echo ALIVE' # here SIGHUP is SIG_IGNed
*/
signal(SIGHUP, SIG_DFL);
cmdloop(1); cmdloop(1);
} }
#if PROFILE #if PROFILE