From 80df778bb8f868423dfe5fc9847238eee8d0a764 Mon Sep 17 00:00:00 2001 From: Michal Zalewski Date: Fri, 10 Oct 2014 11:16:06 +0100 Subject: bugfix: bash executing code following func def This is an upstream bugfix (with slight alterations): Patch-ID: bash42-053 A combination of nested command substitutions and function importing from the environment can cause bash to execute code appearing in the environment variable value following the function definition. Change-Id: I660e59c76d0d50de52d48a0d399fe1dfef3bded8 --- y.tab.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'y.tab.c') diff --git a/y.tab.c b/y.tab.c index 677960f..f72f81e 100644 --- a/y.tab.c +++ b/y.tab.c @@ -4746,6 +4746,16 @@ shell_ungetc (c) eol_ungetc_lookahead = c; } +char * +parser_remaining_input () +{ + if (shell_input_line == 0) + return 0; + if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len) + return '\0'; /* XXX */ + return (shell_input_line + shell_input_line_index); +} + #ifdef INCLUDE_UNUSED /* Back the input pointer up by one, effectively `ungetting' a character. */ static void @@ -6196,8 +6206,7 @@ xparse_dolparen (base, string, indp, flags) restore_parser_state (&ps); reset_parser (); - if (interactive) - token_to_read = 0; + token_to_read = 0; /* Need to find how many characters parse_and_execute consumed, update *indp, if flags != 0, copy the portion of the string parsed into RET -- cgit v1.1