|
|
- 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'):
-
- --- 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 {
- --- 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;
- --- 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;
- --- 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_ */
|