summaryrefslogtreecommitdiff
path: root/debian/patches/bash43-020.diff
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2014-10-08 11:48:42 +0400
committerIgor Pashev <pashev.igor@gmail.com>2014-10-08 11:48:42 +0400
commit597d7d4d9df6e688e766f1da1c7de92b191fbde9 (patch)
treee758dd00a56a9039deba2abab755033466bd0cbf /debian/patches/bash43-020.diff
downloadbash-debian.tar.gz
Debian bash 4.3-11debian/4.3-11debian
Diffstat (limited to 'debian/patches/bash43-020.diff')
-rw-r--r--debian/patches/bash43-020.diff103
1 files changed, 103 insertions, 0 deletions
diff --git a/debian/patches/bash43-020.diff b/debian/patches/bash43-020.diff
new file mode 100644
index 0000000..4a298ea
--- /dev/null
+++ b/debian/patches/bash43-020.diff
@@ -0,0 +1,103 @@
+# DP: bash43-020 upstream patch
+
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-020
+
+Bug-Reported-by: Jared Yanovich <slovichon@gmail.com>
+Bug-Reference-ID: <20140417073654.GB26875@nightderanger.psc.edu>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00065.html
+
+Bug-Description:
+
+When PS2 contains a command substitution, here-documents entered in an
+interactive shell can sometimes cause a segmentation fault.
+
+Patch (apply with `patch -p0'):
+
+Index: b/shell.h
+===================================================================
+--- a/shell.h
++++ b/shell.h
+@@ -168,7 +168,8 @@ typedef struct _sh_parser_state_t {
+ /* flags state affecting the parser */
+ int expand_aliases;
+ int echo_input_at_read;
+-
++ int need_here_doc;
++
+ } sh_parser_state_t;
+
+ typedef struct _sh_input_line_state_t {
+Index: b/parse.y
+===================================================================
+--- a/parse.y
++++ b/parse.y
+@@ -2642,7 +2642,7 @@ gather_here_documents ()
+ int r;
+
+ r = 0;
+- while (need_here_doc)
++ while (need_here_doc > 0)
+ {
+ parser_state |= PST_HEREDOC;
+ make_here_document (redir_stack[r++], line_number);
+@@ -6075,6 +6075,7 @@ save_parser_state (ps)
+
+ ps->expand_aliases = expand_aliases;
+ ps->echo_input_at_read = echo_input_at_read;
++ ps->need_here_doc = need_here_doc;
+
+ ps->token = token;
+ ps->token_buffer_size = token_buffer_size;
+@@ -6123,6 +6124,7 @@ restore_parser_state (ps)
+
+ expand_aliases = ps->expand_aliases;
+ echo_input_at_read = ps->echo_input_at_read;
++ need_here_doc = ps->need_here_doc;
+
+ FREE (token);
+ token = ps->token;
+Index: b/y.tab.c
+===================================================================
+--- a/y.tab.c
++++ b/y.tab.c
+@@ -4954,7 +4954,7 @@ gather_here_documents ()
+ int r;
+
+ r = 0;
+- while (need_here_doc)
++ while (need_here_doc > 0)
+ {
+ parser_state |= PST_HEREDOC;
+ make_here_document (redir_stack[r++], line_number);
+@@ -8387,6 +8387,7 @@ save_parser_state (ps)
+
+ ps->expand_aliases = expand_aliases;
+ ps->echo_input_at_read = echo_input_at_read;
++ ps->need_here_doc = need_here_doc;
+
+ ps->token = token;
+ ps->token_buffer_size = token_buffer_size;
+@@ -8435,6 +8436,7 @@ restore_parser_state (ps)
+
+ expand_aliases = ps->expand_aliases;
+ echo_input_at_read = ps->echo_input_at_read;
++ need_here_doc = ps->need_here_doc;
+
+ FREE (token);
+ token = ps->token;
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 19
++#define PATCHLEVEL 20
+
+ #endif /* _PATCHLEVEL_H_ */