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 --- parse.y | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'parse.y') diff --git a/parse.y b/parse.y index b3c17bc..b4ef178 100644 --- a/parse.y +++ b/parse.y @@ -2433,6 +2433,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 @@ -3883,8 +3893,8 @@ 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