diff options
Diffstat (limited to 'abs/core/bash')
-rw-r--r-- | abs/core/bash/PKGBUILD | 45 | ||||
-rw-r--r-- | abs/core/bash/bash-4.3-old-memleak.patch | 24 | ||||
-rw-r--r-- | abs/core/bash/parser-oob-4.2.patch | 85 |
3 files changed, 62 insertions, 92 deletions
diff --git a/abs/core/bash/PKGBUILD b/abs/core/bash/PKGBUILD index fe5282c..cb6847e 100644 --- a/abs/core/bash/PKGBUILD +++ b/abs/core/bash/PKGBUILD @@ -5,16 +5,16 @@ pkgname=bash _basever=4.3 -_patchlevel=027 +_patchlevel=042 pkgver=$_basever.$_patchlevel -pkgrel=1 +pkgrel=4 pkgdesc='The GNU Bourne Again shell' arch=('i686' 'x86_64') license=('GPL') url='http://www.gnu.org/software/bash/bash.html' groups=('base') backup=(etc/bash.bash{rc,_logout} etc/skel/.bash{rc,_profile,_logout}) -depends=('readline>=6.3' 'glibc') +depends=('readline>=6.3' 'glibc' 'ncurses' 'libncursesw.so') optdepends=('bash-completion: for tab completion') provides=('sh') install=bash.install @@ -25,7 +25,8 @@ source=(http://ftp.gnu.org/gnu/bash/bash-$_basever.tar.gz{,.sig} system.bashrc system.bash_logout privmode-setuid-fail.patch - parser-oob-4.2.patch) + bash-4.3-old-memleak.patch) +validpgpkeys=('7C0135FB088AAF6C66C650B9BB5869F064EA74AB') # Chet Ramey if [[ $((10#${_patchlevel})) -gt 0 ]]; then for (( _p=1; _p<=$((10#${_patchlevel})); _p++ )); do @@ -44,8 +45,8 @@ prepare() { # http://hmarco.org/bugs/bash_4.3-setuid-bug.html (FS#40663) patch -p0 -i ../privmode-setuid-fail.patch - # CVE-2014-7169 patches - patch -p0 -i ../parser-oob-4.2.patch + # https://bugs.archlinux.org/task/45891 + patch -p1 -i ../bash-4.3-old-memleak.patch } build() { @@ -89,7 +90,7 @@ md5sums=('81348932d5da294953e15d4814c74dd1' '561949793177116b7be29a07c385ba8b' '472f536d7c9e8250dc4568ec4cfaf294' 'a577d42e38249d298d6a8d4bf2823883' - '461145288c8ffbf05c0f90554b2aa885' + '5bb46160bba51ff904922c6ccfd9c49e' '1ab682b4e36afa4cf1b426aa7ac81c0d' 'SKIP' '8fc22cf50ec85da00f6af3d66f7ddc1b' @@ -143,4 +144,34 @@ md5sums=('81348932d5da294953e15d4814c74dd1' '922578e2be7ed03729454e92ee8d3f3a' 'SKIP' '8ff6948b16f2db5c29b1b9ae1085bbe7' + 'SKIP' + 'dd51fa67913b5dca45a702b672b3323f' + 'SKIP' + '0729364c977ef4271e9f8dfafadacf67' + 'SKIP' + 'efb709fdb1368945513de23ccbfae053' + 'SKIP' + '236df1ac1130a033ed0dbe2d2115f28f' + 'SKIP' + '2360f7e79cfb28526f80021025ea5909' + 'SKIP' + 'b551c4ee7b8713759e4143499d0bbd48' + 'SKIP' + 'c9a56fbe0348e05a886dff97f2872b74' + 'SKIP' + 'e564e8ab44ed1ca3a4e315a9f6cabdc9' + 'SKIP' + 'b00ff66c41a7c0f06e191200981980b0' + 'SKIP' + 'be2a7b05f6ae560313f3c9d5f7127bda' + 'SKIP' + '61e0522830b24fbe8c0d1b010f132470' + 'SKIP' + 'a4775487abe958536751c8ce53cdf6f9' + 'SKIP' + '80d3587c58854e226055ef099ffeb535' + 'SKIP' + '20bf63eef7cb441c0b1cc49ef3191d03' + 'SKIP' + '70790646ae61e207c995e44931390e50' 'SKIP') diff --git a/abs/core/bash/bash-4.3-old-memleak.patch b/abs/core/bash/bash-4.3-old-memleak.patch new file mode 100644 index 0000000..ff2b665 --- /dev/null +++ b/abs/core/bash/bash-4.3-old-memleak.patch @@ -0,0 +1,24 @@ +diff -up bash-4.3/subst.c.old bash-4.3/subst.c +--- bash-4.3/subst.c.old 2015-08-03 10:32:37.353490080 +0200 ++++ bash-4.3/subst.c 2015-08-03 10:33:34.818533408 +0200 +@@ -9492,7 +9492,7 @@ make_internal_declare (word, option) + char *word; + char *option; + { +- int t; ++ int t, r; + WORD_LIST *wl; + WORD_DESC *w; + +@@ -9504,7 +9504,10 @@ make_internal_declare (word, option) + wl = make_word_list (w, (WORD_LIST *)NULL); + wl = make_word_list (make_word (option), wl); + +- return (declare_builtin (wl)); ++ r = declare_builtin (wl); ++ ++ dispose_words (wl); ++ return r; + } + #endif + diff --git a/abs/core/bash/parser-oob-4.2.patch b/abs/core/bash/parser-oob-4.2.patch deleted file mode 100644 index 2ef5c48..0000000 --- a/abs/core/bash/parser-oob-4.2.patch +++ /dev/null @@ -1,85 +0,0 @@ ---- ../bash-4.2-orig/parse.y 2014-09-25 13:07:59.218209276 +0200
-+++ parse.y 2014-09-25 15:26:52.813159810 +0200
-@@ -264,9 +264,21 @@
-
- /* Variables to manage the task of reading here documents, because we need to
- defer the reading until after a complete command has been collected. */
--static REDIRECT *redir_stack[10];
-+static REDIRECT **redir_stack;
- int need_here_doc;
-
-+/* Pushes REDIR onto redir_stack, resizing it as needed. */
-+static void
-+push_redir_stack (REDIRECT *redir)
-+{
-+ /* Guard against oveflow. */
-+ if (need_here_doc + 1 > INT_MAX / sizeof (*redir_stack))
-+ abort ();
-+ redir_stack = xrealloc (redir_stack,
-+ (need_here_doc + 1) * sizeof (*redir_stack));
-+ redir_stack[need_here_doc++] = redir;
-+}
-+
- /* Where shell input comes from. History expansion is performed on each
- line when the shell is interactive. */
- static char *shell_input_line = (char *)NULL;
-@@ -519,42 +531,42 @@
- source.dest = 0;
- redir.filename = $2;
- $$ = make_redirection (source, r_reading_until, redir, 0);
-- redir_stack[need_here_doc++] = $$;
-+ push_redir_stack ($$);
- }
- | NUMBER LESS_LESS WORD
- {
- source.dest = $1;
- redir.filename = $3;
- $$ = make_redirection (source, r_reading_until, redir, 0);
-- redir_stack[need_here_doc++] = $$;
-+ push_redir_stack ($$);
- }
- | REDIR_WORD LESS_LESS WORD
- {
- source.filename = $1;
- redir.filename = $3;
- $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
-- redir_stack[need_here_doc++] = $$;
-+ push_redir_stack ($$);
- }
- | LESS_LESS_MINUS WORD
- {
- source.dest = 0;
- redir.filename = $2;
- $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
-- redir_stack[need_here_doc++] = $$;
-+ push_redir_stack ($$);
- }
- | NUMBER LESS_LESS_MINUS WORD
- {
- source.dest = $1;
- redir.filename = $3;
- $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
-- redir_stack[need_here_doc++] = $$;
-+ push_redir_stack ($$);
- }
- | REDIR_WORD LESS_LESS_MINUS WORD
- {
- source.filename = $1;
- redir.filename = $3;
- $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
-- redir_stack[need_here_doc++] = $$;
-+ push_redir_stack ($$);
- }
- | LESS_LESS_LESS WORD
- {
-@@ -4757,7 +4769,7 @@
- case CASE:
- case SELECT:
- case FOR:
-- if (word_top < MAX_CASE_NEST)
-+ if (word_top + 1 < MAX_CASE_NEST)
- word_top++;
- word_lineno[word_top] = line_number;
- break;
-
-
|