diff --git a/bash-4.3-here-doc-ps2-comsub.patch b/bash-4.3-here-doc-ps2-comsub.patch new file mode 100644 index 0000000..0ccfd20 --- /dev/null +++ b/bash-4.3-here-doc-ps2-comsub.patch @@ -0,0 +1,47 @@ +*** ../bash-4.3-patched/shell.h 2012-12-25 21:11:01.000000000 -0500 +--- shell.h 2014-06-03 09:24:28.000000000 -0400 +*************** +*** 169,173 **** + int expand_aliases; + int echo_input_at_read; +! + } sh_parser_state_t; + +--- 169,174 ---- + int expand_aliases; + int echo_input_at_read; +! int need_here_doc; +! + } sh_parser_state_t; + +*** ../bash-4.3-patched/parse.y 2014-05-14 09:16:40.000000000 -0400 +--- parse.y 2014-04-30 09:27:59.000000000 -0400 +*************** +*** 2643,2647 **** + + r = 0; +! while (need_here_doc) + { + parser_state |= PST_HEREDOC; +--- 2643,2647 ---- + + r = 0; +! while (need_here_doc > 0) + { + parser_state |= PST_HEREDOC; +*************** +*** 6076,6079 **** +--- 6076,6080 ---- + ps->expand_aliases = expand_aliases; + ps->echo_input_at_read = echo_input_at_read; ++ ps->need_here_doc = need_here_doc; + + ps->token = token; +*************** +*** 6124,6127 **** +--- 6125,6129 ---- + expand_aliases = ps->expand_aliases; + echo_input_at_read = ps->echo_input_at_read; ++ need_here_doc = ps->need_here_doc; + + FREE (token); diff --git a/bash-4.3-lastpipe-nested-pipe-segfault.patch b/bash-4.3-lastpipe-nested-pipe-segfault.patch new file mode 100644 index 0000000..200a84f --- /dev/null +++ b/bash-4.3-lastpipe-nested-pipe-segfault.patch @@ -0,0 +1,24 @@ +*** ../bash-4.3-patched/execute_cmd.c 2014-01-31 10:54:52.000000000 -0500 +--- execute_cmd.c 2014-06-19 08:05:49.000000000 -0400 +*************** +*** 2410,2414 **** + lstdin = wait_for (lastpid); + #if defined (JOB_CONTROL) +! exec_result = job_exit_status (lastpipe_jid); + #endif + unfreeze_jobs_list (); +--- 2425,2438 ---- + lstdin = wait_for (lastpid); + #if defined (JOB_CONTROL) +! /* If wait_for removes the job from the jobs table, use result of last +! command as pipeline's exit status as usual. The jobs list can get +! frozen and unfrozen at inconvenient times if there are multiple pipelines +! running simultaneously. */ +! if (INVALID_JOB (lastpipe_jid) == 0) +! exec_result = job_exit_status (lastpipe_jid); +! else if (pipefail_opt) +! exec_result = exec_result | lstdin; /* XXX */ +! /* otherwise we use exec_result */ +! + #endif + unfreeze_jobs_list (); diff --git a/bash-4.3-parse-time-keyword.patch b/bash-4.3-parse-time-keyword.patch new file mode 100644 index 0000000..40337f5 --- /dev/null +++ b/bash-4.3-parse-time-keyword.patch @@ -0,0 +1,28 @@ +*** ../bash-4.3-patched/parse.y 2014-04-07 11:56:12.000000000 -0400 +--- parse.y 2014-06-11 10:25:53.000000000 -0400 +*************** +*** 2789,2797 **** + case OR_OR: + case '&': + case DO: + case THEN: + case ELSE: + case '{': /* } */ +! case '(': /* ) */ + case BANG: /* ! time pipeline */ + case TIME: /* time time pipeline */ +--- 2789,2802 ---- + case OR_OR: + case '&': ++ case WHILE: + case DO: ++ case UNTIL: ++ case IF: + case THEN: ++ case ELIF: + case ELSE: + case '{': /* } */ +! case '(': /* )( */ +! case ')': /* only valid in case statement */ + case BANG: /* ! time pipeline */ + case TIME: /* time time pipeline */ diff --git a/bash-4.3-pathexp-globignore-delim.patch b/bash-4.3-pathexp-globignore-delim.patch new file mode 100644 index 0000000..6b019f9 --- /dev/null +++ b/bash-4.3-pathexp-globignore-delim.patch @@ -0,0 +1,15 @@ +*** ../bash-4.3-patched/pathexp.c 2014-01-31 09:34:33.000000000 -0500 +--- pathexp.c 2014-06-20 15:33:09.000000000 -0400 +*************** +*** 539,543 **** + return 0; + +! n = skip_to_delim (s, i, ":", SD_NOJMP|SD_EXTGLOB); + t = substring (s, i, n); + +--- 539,543 ---- + return 0; + +! n = skip_to_delim (s, i, ":", SD_NOJMP|SD_EXTGLOB|SD_GLOB); + t = substring (s, i, n); + diff --git a/bash-4.3-readline-revert-lines.patch b/bash-4.3-readline-revert-lines.patch new file mode 100644 index 0000000..2ce3d87 --- /dev/null +++ b/bash-4.3-readline-revert-lines.patch @@ -0,0 +1,18 @@ +*** ../bash-4.3-patched/lib/readline/misc.c 2012-09-01 18:03:11.000000000 -0400 +--- lib/readline/misc.c 2014-06-30 13:41:19.000000000 -0400 +*************** +*** 462,465 **** +--- 462,466 ---- + /* Set up rl_line_buffer and other variables from history entry */ + rl_replace_from_history (entry, 0); /* entry->line is now current */ ++ entry->data = 0; /* entry->data is now current undo list */ + /* Undo all changes to this history entry */ + while (rl_undo_list) +*************** +*** 469,473 **** + FREE (entry->line); + entry->line = savestring (rl_line_buffer); +- entry->data = 0; + } + entry = previous_history (); +--- 470,473 ---- diff --git a/bash.spec b/bash.spec index 268fbde..4d6dae4 100644 --- a/bash.spec +++ b/bash.spec @@ -7,7 +7,7 @@ Version: %{baseversion}%{patchleveltag} Name: bash Summary: The GNU Bourne Again shell -Release: 5%{?dist} +Release: 6%{?dist} Group: System Environment/Shells License: GPLv3+ Url: http://www.gnu.org/software/bash @@ -89,7 +89,13 @@ Patch127: bash-4.2-trap.patch # 1112710 - mention ulimit -c and -f POSIX block size Patch128: bash-4.3-man-ulimit.patch +# A series of patches emitted by upstream since 4.3-18 Patch129: bash-4.3-array-element.patch +Patch130: bash-4.3-here-doc-ps2-comsub.patch +Patch131: bash-4.3-parse-time-keyword.patch +Patch132: bash-4.3-lastpipe-nested-pipe-segfault.patch +Patch133: bash-4.3-readline-revert-lines.patch +Patch134: bash-4.3-pathexp-globignore-delim.patch BuildRequires: texinfo bison BuildRequires: ncurses-devel @@ -163,6 +169,11 @@ This package contains documentation files for %{name}. %patch125 -p1 -b .size_type %patch128 -p1 -b .ulimit %patch129 -p1 -b .element +%patch130 -p0 -b .comsub +%patch131 -p0 -b .keyword +%patch132 -p0 -b .segfault +%patch133 -p0 -b .lines +%patch134 -p0 -b .delim echo %{version} > _distribution echo %{release} > _patchlevel @@ -358,6 +369,9 @@ end %doc doc/*.ps doc/*.0 doc/*.html doc/article.txt %changelog +* Thu Jul 24 2014 Ondrej Oprala - 4.3.18-6 +- Apply all upstream patches since 4.3-18-1 up to this date + * Thu Jul 24 2014 Ondrej Oprala - 4.3.18-5 - Array name expansion - apply upstream quickfix