diff --git a/bash-4.3-memleak.patch b/bash-4.3-memleak.patch deleted file mode 100644 index 671d2eb..0000000 --- a/bash-4.3-memleak.patch +++ /dev/null @@ -1,15 +0,0 @@ -*** ../bash-4.3-patched/subst.c 2014-10-01 12:57:47.000000000 -0400 ---- subst.c 2015-06-22 09:16:53.000000000 -0400 -*************** -*** 5783,5787 **** - if (pflags & PF_ASSIGNRHS) - { -! temp = array_variable_name (name, &tt, (int *)0); - if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']') - temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind); ---- 5783,5787 ---- - if (pflags & PF_ASSIGNRHS) - { -! var = array_variable_part (name, &tt, (int *)0); - if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']') - temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind); diff --git a/bash.spec b/bash.spec index 546cab8..8aa1b30 100644 --- a/bash.spec +++ b/bash.spec @@ -1,6 +1,6 @@ #% define beta_tag rc2 %global _hardened_build 1 -%define patchleveltag .39 +%define patchleveltag .42 %define baseversion 4.3 %bcond_without tests %{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}} @@ -8,7 +8,7 @@ Version: %{baseversion}%{patchleveltag} Name: bash Summary: The GNU Bourne Again shell -Release: 6%{?dist} +Release: 1%{?dist} Group: System Environment/Shells License: GPLv3+ Url: http://www.gnu.org/software/bash @@ -70,6 +70,9 @@ Patch036: ftp://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-036 Patch037: ftp://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-037 Patch038: ftp://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-038 Patch039: ftp://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-039 +Patch040: ftp://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-040 +Patch041: ftp://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-041 +Patch042: ftp://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-042 # Other patches @@ -128,9 +131,6 @@ Patch134: bash-4.3-pathexp-globignore-delim.patch # 1102815 - fix double echoes in vi visual mode Patch135: bash-4.3-noecho.patch -# 1224855 - memleak in 4.3.39 -Patch136: bash-4.3-memleak.patch - # 1182278 - bash crashes on `select' if REPLY is readonly Patch137: bash-4.3-select-readonly.patch @@ -205,6 +205,9 @@ This package contains documentation files for %{name}. %patch037 -p0 -b .037 %patch038 -p0 -b .038 %patch039 -p0 -b .039 +%patch040 -p0 -b .040 +%patch041 -p0 -b .041 +%patch042 -p0 -b .042 # Other patches %patch101 -p1 -b .security @@ -235,7 +238,6 @@ This package contains documentation files for %{name}. #%patch131 -p0 -b .keyword %patch134 -p0 -b .delim %patch135 -p1 -b .noecho -%patch136 -p0 -b .memleak %patch137 -p1 -b .readonly %patch138 -p1 -b .lc_all %patch139 -p1 -b .oldleak @@ -437,6 +439,9 @@ end %doc doc/*.ps doc/*.0 doc/*.html doc/article.txt %changelog +* Tue Aug 18 2015 Ondrej Oprala - 4.3.42-1 +- Patchlevel 42 + * Mon Aug 03 2015 Ondrej Oprala - 4.3.39-6 - #1245233 - fixed memleak diff --git a/bash43-040 b/bash43-040 new file mode 100644 index 0000000..978ce1c --- /dev/null +++ b/bash43-040 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-040 + +Bug-Reported-by: Jean Delvare +Bug-Reference-ID: <20150609180231.5f463695@endymion.delvare> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00033.html + +Bug-Description: + +There is a memory leak that occurs when bash expands an array reference on +the rhs of an assignment statement. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/subst.c 2014-10-01 12:57:47.000000000 -0400 +--- subst.c 2015-06-22 09:16:53.000000000 -0400 +*************** +*** 5783,5787 **** + if (pflags & PF_ASSIGNRHS) + { +! temp = array_variable_name (name, &tt, (int *)0); + if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']') + temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind); +--- 5783,5787 ---- + if (pflags & PF_ASSIGNRHS) + { +! var = array_variable_part (name, &tt, (int *)0); + if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']') + temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 39 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 40 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash43-041 b/bash43-041 new file mode 100644 index 0000000..a040a2a --- /dev/null +++ b/bash43-041 @@ -0,0 +1,72 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-041 + +Bug-Reported-by: Hanno Böck +Bug-Reference-ID: <20150623131106.6f111da9@pc1>, <20150707004640.0e61d2f9@pc1> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00089.html, + http://lists.gnu.org/archive/html/bug-bash/2015-07/msg00018.html + +Bug-Description: + +There are several out-of-bounds read errors that occur when completing command +lines where assignment statements appear before the command name. The first +two appear only when programmable completion is enabled; the last one only +happens when listing possible completions. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3.40/bashline.c 2014-12-29 14:39:43.000000000 -0500 +--- bashline.c 2015-08-12 10:21:58.000000000 -0400 +*************** +*** 1469,1476 **** +--- 1469,1489 ---- + os = start; + n = 0; ++ was_assignment = 0; + s = find_cmd_start (os); + e = find_cmd_end (end); + do + { ++ /* Don't read past the end of rl_line_buffer */ ++ if (s > rl_end) ++ { ++ s1 = s = e1; ++ break; ++ } ++ /* Or past point if point is within an assignment statement */ ++ else if (was_assignment && s > rl_point) ++ { ++ s1 = s = e1; ++ break; ++ } + /* Skip over assignment statements preceding a command name. If we + don't find a command name at all, we can perform command name +*** ../bash-4.3.40/lib/readline/complete.c 2013-10-14 09:27:10.000000000 -0400 +--- lib/readline/complete.c 2015-07-31 09:34:39.000000000 -0400 +*************** +*** 690,693 **** +--- 690,695 ---- + if (temp == 0 || *temp == '\0') + return (pathname); ++ else if (temp[1] == 0 && temp == pathname) ++ return (pathname); + /* If the basename is NULL, we might have a pathname like '/usr/src/'. + Look for a previous slash and, if one is found, return the portion +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 40 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 41 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash43-042 b/bash43-042 new file mode 100644 index 0000000..cc3e17c --- /dev/null +++ b/bash43-042 @@ -0,0 +1,55 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-042 + +Bug-Reported-by: Nathan Neulinger +Bug-Reference-ID: <558EFDF2.7060402@neulinger.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00096.html + +Bug-Description: + +There is a problem when parsing command substitutions containing `case' +commands within pipelines that causes the parser to not correctly identify +the end of the command substitution. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/parse.y 2015-05-18 19:27:05.000000000 -0400 +--- parse.y 2015-06-29 10:59:27.000000000 -0400 +*************** +*** 3709,3712 **** +--- 3709,3714 ---- + tflags |= LEX_INWORD; + lex_wlen = 0; ++ if (tflags & LEX_RESWDOK) ++ lex_rwlen = 0; + } + } +*** ../bash-4.3-patched/parse.y 2015-05-18 19:27:05.000000000 -0400 +--- y.tab.c 2015-06-29 10:59:27.000000000 -0400 +*************** +*** 6021,6024 **** +--- 6021,6026 ---- + tflags |= LEX_INWORD; + lex_wlen = 0; ++ if (tflags & LEX_RESWDOK) ++ lex_rwlen = 0; + } + } +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 41 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 42 + + #endif /* _PATCHLEVEL_H_ */