81 lines
2.3 KiB
Diff
81 lines
2.3 KiB
Diff
BASH PATCH REPORT
|
|
=================
|
|
|
|
Bash-Release: 5.3
|
|
Patch-ID: bash53-012
|
|
|
|
Bug-Reported-by: earl_chew@yahoo.com
|
|
Bug-Reference-ID:
|
|
Bug-Reference-URL: https://savannah.gnu.org/bugs/?67745
|
|
|
|
Bug-Description:
|
|
|
|
If a subshell with an inherited EXIT trap receives a fatal signal before
|
|
it clears the exit trap, and before it restores its original signal
|
|
handlers, it's possible for it to inappropriately run the inherited EXIT
|
|
trap.
|
|
|
|
Patch (apply with `patch -p0'):
|
|
|
|
*** ../bash-5.3-patched/execute_cmd.c Thu Jun 5 11:02:01 2025
|
|
--- execute_cmd.c Fri Jan 9 10:21:30 2026
|
|
***************
|
|
*** 1644,1648 ****
|
|
if (user_subshell)
|
|
{
|
|
! subshell_environment = SUBSHELL_PAREN; /* XXX */
|
|
if (asynchronous)
|
|
subshell_environment |= SUBSHELL_ASYNC;
|
|
--- 1681,1685 ----
|
|
if (user_subshell)
|
|
{
|
|
! subshell_environment = SUBSHELL_PAREN|SUBSHELL_IGNTRAP; /* XXX */
|
|
if (asynchronous)
|
|
subshell_environment |= SUBSHELL_ASYNC;
|
|
***************
|
|
*** 1650,1654 ****
|
|
else
|
|
{
|
|
! subshell_environment = 0; /* XXX */
|
|
if (asynchronous)
|
|
subshell_environment |= SUBSHELL_ASYNC;
|
|
--- 1687,1691 ----
|
|
else
|
|
{
|
|
! subshell_environment = SUBSHELL_IGNTRAP; /* XXX */
|
|
if (asynchronous)
|
|
subshell_environment |= SUBSHELL_ASYNC;
|
|
*** ../bash-5.3-patched/sig.c Wed Dec 18 15:52:06 2024
|
|
--- sig.c Fri Jan 9 10:21:43 2026
|
|
***************
|
|
*** 639,643 ****
|
|
comsub_ignore_return = return_catch_flag = wait_intr_flag = 0;
|
|
|
|
! run_exit_trap (); /* XXX - run exit trap possibly in signal context? */
|
|
|
|
kill_shell (sig);
|
|
--- 645,652 ----
|
|
comsub_ignore_return = return_catch_flag = wait_intr_flag = 0;
|
|
|
|
! /* Don't run the exit trap if we're supposed to be ignoring traps in a
|
|
! subshell environment. */
|
|
! if ((subshell_environment & SUBSHELL_IGNTRAP) == 0)
|
|
! run_exit_trap (); /* XXX - run exit trap possibly in signal context? */
|
|
|
|
kill_shell (sig);
|
|
*** ../bash-5.3/patchlevel.h 2020-06-22 14:51:03.000000000 -0400
|
|
--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400
|
|
***************
|
|
*** 26,30 ****
|
|
looks for to find the patch level (for the sccs version string). */
|
|
|
|
! #define PATCHLEVEL 11
|
|
|
|
#endif /* _PATCHLEVEL_H_ */
|
|
--- 26,30 ----
|
|
looks for to find the patch level (for the sccs version string). */
|
|
|
|
! #define PATCHLEVEL 12
|
|
|
|
#endif /* _PATCHLEVEL_H_ */
|