summaryrefslogtreecommitdiffstats
path: root/abs/core/bash
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/bash')
-rw-r--r--abs/core/bash/PKGBUILD45
-rw-r--r--abs/core/bash/bash-4.3-old-memleak.patch24
-rw-r--r--abs/core/bash/parser-oob-4.2.patch85
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;
-
-