diff --git a/system/base/bash/files/official/bash52-027.patch b/system/base/bash/files/official/bash52-027.patch new file mode 100644 index 00000000..9f18676f --- /dev/null +++ b/system/base/bash/files/official/bash52-027.patch @@ -0,0 +1,63 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.2 +Patch-ID: bash52-027 + +Bug-Reported-by: Emanuel Haupt +Bug-Reference-ID: <20221001123841.27e1bfb3bf3ed58ab32ea2b5@FreeBSD.org> +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00000.html + +Bug-Description: + +The configure test for the presence of strtoimax(3) is inverted. + +Patch (apply with `patch -p0'): + + +*** ../bash-5.2-patched/m4/strtoimax.m4 Mon Apr 11 16:31:52 2022 +--- m4/strtoimax.m4 Tue Apr 9 11:12:36 2024 +*************** +*** 30,34 **** + ]) + AC_MSG_RESULT($bash_cv_func_strtoimax) +! if test $bash_cv_func_strtoimax = yes; then + AC_LIBOBJ(strtoimax) + fi +--- 30,34 ---- + ]) + AC_MSG_RESULT($bash_cv_func_strtoimax) +! if test $bash_cv_func_strtoimax = no; then + AC_LIBOBJ(strtoimax) + fi +*** ..//bash-5.2-patched/configure Fri Sep 23 10:13:22 2022 +--- configure Tue Apr 9 11:13:21 2024 +*************** +*** 20444,20448 **** + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strtoimax" >&5 + printf "%s\n" "$bash_cv_func_strtoimax" >&6; } +! if test $bash_cv_func_strtoimax = yes; then + case " $LIBOBJS " in + *" strtoimax.$ac_objext "* ) ;; +--- 20444,20448 ---- + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strtoimax" >&5 + printf "%s\n" "$bash_cv_func_strtoimax" >&6; } +! if test $bash_cv_func_strtoimax = no; then + case " $LIBOBJS " in + *" strtoimax.$ac_objext "* ) ;; + +*** ../bash-5.2/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 26 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 27 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/system/base/bash/files/official/bash52-028.patch b/system/base/bash/files/official/bash52-028.patch new file mode 100644 index 00000000..806bdc5e --- /dev/null +++ b/system/base/bash/files/official/bash52-028.patch @@ -0,0 +1,49 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.2 +Patch-ID: bash52-028 + +Bug-Reported-by: Mark March +Bug-Reference-ID: <834896722.6304071.1718744118467@mail.yahoo.com> +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2024-06/msg00122.html + +Bug-Description: + +A DEBUG trap in an asynchronous process can steal the controlling terminal +away from the calling shell, causing it to exit. + +Patch (apply with `patch -p0'): + +*** ../bash-20240609/trap.c Fri May 3 12:12:38 2024 +--- trap.c Wed Jun 26 10:41:40 2024 +*************** +*** 1217,1221 **** + restore_pgrp_pipe (save_pipe); + # endif +! if (pipeline_pgrp > 0 && ((subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0)) + give_terminal_to (pipeline_pgrp, 1); + +--- 1217,1223 ---- + restore_pgrp_pipe (save_pipe); + # endif +! /* If the trap command gave the terminal to another process group, +! restore it. XXX - check running_in_background? */ +! if (job_control && pipeline_pgrp > 0 && ((subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0)) + give_terminal_to (pipeline_pgrp, 1); + +*** ../bash-5.2/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 27 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 28 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/system/base/bash/files/official/bash52-029.patch b/system/base/bash/files/official/bash52-029.patch new file mode 100644 index 00000000..7c816eaa --- /dev/null +++ b/system/base/bash/files/official/bash52-029.patch @@ -0,0 +1,137 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.2 +Patch-ID: bash52-029 + +Bug-Reported-by: Grisha Levit +Bug-Reference-ID: +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2023-04/msg00072.html + +Bug-Description: + +There are problems with recovery after parser errors when parsing compound +assignments. For instance, the `local' builtin reports an error but never +cleans up the function context. + +Patch (apply with `patch -p0'): + +*** ../bash-20230427/parse.y Fri Apr 14 11:50:29 2023 +--- parse.y Mon May 1 16:25:14 2023 +*************** +*** 6471,6478 **** + { + set_exit_status (EXECUTION_FAILURE); + if (interactive_shell == 0 && posixly_correct) + jump_to_top_level (FORCE_EOF); + else +! jump_to_top_level (DISCARD); + } + +--- 6471,6483 ---- + { + set_exit_status (EXECUTION_FAILURE); ++ current_token = '\n'; /* XXX */ + if (interactive_shell == 0 && posixly_correct) + jump_to_top_level (FORCE_EOF); + else +! { +! if (executing && parse_and_execute_level == 0) +! top_level_cleanup (); +! jump_to_top_level (DISCARD); +! } + } + +*************** +*** 6538,6546 **** + { + set_exit_status (EXECUTION_FAILURE); +! last_read_token = '\n'; /* XXX */ + if (interactive_shell == 0 && posixly_correct) + jump_to_top_level (FORCE_EOF); + else +! jump_to_top_level (DISCARD); + } + +--- 6543,6555 ---- + { + set_exit_status (EXECUTION_FAILURE); +! last_read_token = current_token = '\n'; /* XXX */ + if (interactive_shell == 0 && posixly_correct) + jump_to_top_level (FORCE_EOF); + else +! { +! if (executing && parse_and_execute_level == 0) +! top_level_cleanup (); +! jump_to_top_level (DISCARD); +! } + } + + +*** ../bash-20230427/y.tab.c Tue Jul 30 15:19:31 2024 +--- y.tab.c Tue Jul 30 15:20:21 2024 +*************** +*** 8786,8793 **** + { + set_exit_status (EXECUTION_FAILURE); + if (interactive_shell == 0 && posixly_correct) + jump_to_top_level (FORCE_EOF); + else +! jump_to_top_level (DISCARD); + } + +--- 8786,8798 ---- + { + set_exit_status (EXECUTION_FAILURE); ++ current_token = '\n'; /* XXX */ + if (interactive_shell == 0 && posixly_correct) + jump_to_top_level (FORCE_EOF); + else +! { +! if (executing && parse_and_execute_level == 0) +! top_level_cleanup (); +! jump_to_top_level (DISCARD); +! } + } + +*************** +*** 8853,8861 **** + { + set_exit_status (EXECUTION_FAILURE); +! last_read_token = '\n'; /* XXX */ + if (interactive_shell == 0 && posixly_correct) + jump_to_top_level (FORCE_EOF); + else +! jump_to_top_level (DISCARD); + } + +--- 8858,8870 ---- + { + set_exit_status (EXECUTION_FAILURE); +! last_read_token = current_token = '\n'; /* XXX */ + if (interactive_shell == 0 && posixly_correct) + jump_to_top_level (FORCE_EOF); + else +! { +! if (executing && parse_and_execute_level == 0) +! top_level_cleanup (); +! jump_to_top_level (DISCARD); +! } + } + + +*** ../bash-5.2/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 28 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 29 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/system/base/bash/files/official/bash52-030.patch b/system/base/bash/files/official/bash52-030.patch new file mode 100644 index 00000000..20b8f244 --- /dev/null +++ b/system/base/bash/files/official/bash52-030.patch @@ -0,0 +1,130 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.2 +Patch-ID: bash52-030 + +Bug-Reported-by: Steven Pelley +Bug-Reference-ID: +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2024-01/msg00104.html + +Bug-Description: + +`wait -n' can fail to return some jobs if they exit due to signals the shell +does not report to the user. + +Patch (apply with `patch -p0'): + +*** ../bash-5.2-patched/jobs.c Thu Nov 9 14:59:14 2023 +--- jobs.c Tue Jul 30 15:27:44 2024 +*************** +*** 4275,4279 **** + ((DEADJOB (job) && IS_FOREGROUND (job) == 0) || STOPPED (job))) + continue; +! + /* If job control is disabled, don't print the status messages. + Mark dead jobs as notified so that they get cleaned up. If +--- 4288,4312 ---- + ((DEADJOB (job) && IS_FOREGROUND (job) == 0) || STOPPED (job))) + continue; +! +! /* Do the same thing and don't print anything or mark as notified +! for the signals we're not going to report on. This is the opposite +! of the first two cases under case JDEAD below. */ +! else if (interactive_shell == 0 && DEADJOB (job) && IS_FOREGROUND (job) == 0 && +! WIFSIGNALED (s) && (termsig == SIGINT +! #if defined (DONT_REPORT_SIGTERM) +! || termsig == SIGTERM +! #endif +! #if defined (DONT_REPORT_SIGPIPE) +! || termsig == SIGPIPE +! #endif +! || signal_is_trapped (termsig))) +! continue; +! +! /* hang onto the status if the shell is running -c command */ +! else if (startup_state == 2 && subshell_environment == 0 && +! WIFSIGNALED (s) == 0 && +! ((DEADJOB (job) && IS_FOREGROUND (job) == 0) || STOPPED (job))) +! continue; +! + /* If job control is disabled, don't print the status messages. + Mark dead jobs as notified so that they get cleaned up. If +*************** +*** 4298,4302 **** + /* Print info on jobs that are running in the background, + and on foreground jobs that were killed by anything +! except SIGINT (and possibly SIGPIPE). */ + switch (JOBSTATE (job)) + { +--- 4331,4335 ---- + /* Print info on jobs that are running in the background, + and on foreground jobs that were killed by anything +! except SIGINT (and possibly SIGTERM and SIGPIPE). */ + switch (JOBSTATE (job)) + { +*************** +*** 4318,4321 **** +--- 4351,4355 ---- + else if (IS_FOREGROUND (job)) + { ++ /* foreground jobs, interactive and non-interactive shells */ + #if !defined (DONT_REPORT_SIGPIPE) + if (termsig && WIFSIGNALED (s) && termsig != SIGINT) +*************** +*** 4331,4337 **** + fprintf (stderr, "\n"); + } + } +! else if (job_control) /* XXX job control test added */ + { + if (dir == 0) + dir = current_working_directory (); +--- 4365,4375 ---- + fprintf (stderr, "\n"); + } ++ /* foreground jobs that exit cleanly */ ++ jobs[job]->flags |= J_NOTIFIED; + } +! else if (job_control) + { ++ /* background jobs with job control, interactive and ++ non-interactive shells */ + if (dir == 0) + dir = current_working_directory (); +*************** +*** 4342,4346 **** + } + +! jobs[job]->flags |= J_NOTIFIED; + break; + +--- 4380,4391 ---- + } + +! /* Interactive shells without job control enabled are handled +! above. */ +! /* XXX - this is a catch-all in case we missed a state */ +! else +! { +! internal_debug("notify_of_job_status: catch-all setting J_NOTIFIED on job %d (%d), startup state = %d", job, jobs[job]->flags, startup_state); +! jobs[job]->flags |= J_NOTIFIED; +! } + break; + + +*** ../bash-5.2/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 29 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 30 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/system/base/bash/files/official/bash52-031.patch b/system/base/bash/files/official/bash52-031.patch new file mode 100644 index 00000000..0210bb27 --- /dev/null +++ b/system/base/bash/files/official/bash52-031.patch @@ -0,0 +1,46 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.2 +Patch-ID: bash52-031 + +Bug-Reported-by: Grisha Levit +Bug-Reference-ID: +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2023-06/msg00045.html + +Bug-Description: + +There is a memory leak in the code that implements the optimized $( +Bug-Reference-ID: Mon, 11 Dec 2023 20:41:58 +0600 +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2023-12/msg00047.html + +Bug-Description: + +Patch (apply with `patch -p0'): + +When printing functions containing coprocesses, the displayed coproc command +has the word COPROC inserted unconditionally, resulting in function bodies +that cannot be re-read as input. + +*** ../bash-5.2-patched/print_cmd.c Mon Aug 21 16:09:44 2023 +--- print_cmd.c Mon Dec 11 15:34:30 2023 +*************** +*** 357,361 **** + + case cm_coproc: +! cprintf ("coproc %s ", command->value.Coproc->name); + skip_this_indent++; + make_command_string_internal (command->value.Coproc->command); +--- 357,363 ---- + + case cm_coproc: +! cprintf ("coproc "); +! if (command->value.Coproc->command->type != cm_simple) +! cprintf ("%s ", command->value.Coproc->name); + skip_this_indent++; + make_command_string_internal (command->value.Coproc->command); + +*** ../bash-5.2/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 31 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 32 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/system/base/bash/pspec.xml b/system/base/bash/pspec.xml index 166842da..91e97739 100755 --- a/system/base/bash/pspec.xml +++ b/system/base/bash/pspec.xml @@ -45,6 +45,12 @@ official/bash52-024.patch official/bash52-025.patch official/bash52-026.patch + official/bash52-027.patch + official/bash52-028.patch + official/bash52-029.patch + official/bash52-030.patch + official/bash52-031.patch + official/bash52-032.patch @@ -94,6 +100,13 @@ + + 2024-08-02 + 5.2.32 + Rebuild. + Mustafa Cinasal + muscnsl@gmail.com + 2024-01-14 5.2.26