diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2014-10-08 11:48:42 +0400 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2014-10-08 11:48:42 +0400 |
commit | 597d7d4d9df6e688e766f1da1c7de92b191fbde9 (patch) | |
tree | e758dd00a56a9039deba2abab755033466bd0cbf /debian/patches/bash43-030.diff | |
download | bash-debian.tar.gz |
Debian bash 4.3-11debian/4.3-11debian
Diffstat (limited to 'debian/patches/bash43-030.diff')
-rw-r--r-- | debian/patches/bash43-030.diff | 1404 |
1 files changed, 1404 insertions, 0 deletions
diff --git a/debian/patches/bash43-030.diff b/debian/patches/bash43-030.diff new file mode 100644 index 0000000..410ed91 --- /dev/null +++ b/debian/patches/bash43-030.diff @@ -0,0 +1,1404 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-030 + +Bug-Reported-by: Michal Zalewski <lcamtuf@coredump.cx> +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +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. + +Index: b/builtins/evalstring.c +=================================================================== +--- a/builtins/evalstring.c ++++ b/builtins/evalstring.c +@@ -308,12 +308,25 @@ parse_and_execute (string, from_file, fl + { + struct fd_bitmap *bitmap; + +- if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def) ++ if (flags & SEVAL_FUNCDEF) + { +- internal_warning ("%s: ignoring function definition attempt", from_file); +- should_jump_to_top_level = 0; +- last_result = last_command_exit_value = EX_BADUSAGE; +- break; ++ char *x; ++ ++ /* If the command parses to something other than a straight ++ function definition, or if we have not consumed the entire ++ string, or if the parser has transformed the function ++ name (as parsing will if it begins or ends with shell ++ whitespace, for example), reject the attempt */ ++ if (command->type != cm_function_def || ++ ((x = parser_remaining_input ()) && *x) || ++ (STREQ (from_file, command->value.Function_def->name->word) == 0)) ++ { ++ internal_warning (_("%s: ignoring function definition attempt"), from_file); ++ should_jump_to_top_level = 0; ++ last_result = last_command_exit_value = EX_BADUSAGE; ++ reset_parser (); ++ break; ++ } + } + + bitmap = new_fd_bitmap (FD_BITMAP_SIZE); +@@ -378,7 +391,10 @@ parse_and_execute (string, from_file, fl + discard_unwind_frame ("pe_dispose"); + + if (flags & SEVAL_ONECMD) +- break; ++ { ++ reset_parser (); ++ break; ++ } + } + } + else +Index: b/parse.y +=================================================================== +--- a/parse.y ++++ b/parse.y +@@ -2538,6 +2538,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 +@@ -4027,8 +4037,8 @@ xparse_dolparen (base, string, indp, fla + reset_parser (); + /* reset_parser clears shell_input_line and associated variables */ + restore_input_line_state (&ls); +- 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 +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 29 ++#define PATCHLEVEL 30 + + #endif /* _PATCHLEVEL_H_ */ +Index: b/shell.h +=================================================================== +--- a/shell.h ++++ b/shell.h +@@ -180,6 +180,8 @@ typedef struct _sh_input_line_state_t { + } sh_input_line_state_t; + + /* Let's try declaring these here. */ ++extern char *parser_remaining_input __P((void)); ++ + extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *)); + extern void restore_parser_state __P((sh_parser_state_t *)); + +Index: b/y.tab.c +=================================================================== +--- a/y.tab.c ++++ b/y.tab.c +@@ -168,7 +168,7 @@ + + + /* Copy the first part of user declarations. */ +-#line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 21 "/usr/src/local/bash/bash-4.3-patched/parse.y" + + #include "config.h" + +@@ -497,7 +497,7 @@ static REDIRECTEE redir; + + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + typedef union YYSTYPE +-#line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 329 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + WORD_DESC *word; /* the word that we read. */ + int number; /* the number that we read. */ +@@ -2098,7 +2098,7 @@ yyreduce: + switch (yyn) + { + case 2: +-#line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 383 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + /* Case of regular command. Discard the error + safety net,and return the command just parsed. */ +@@ -2112,7 +2112,7 @@ yyreduce: + break; + + case 3: +-#line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 394 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + /* Case of regular command, but not a very + interesting one. Return a NULL command. */ +@@ -2124,7 +2124,7 @@ yyreduce: + break; + + case 4: +-#line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 403 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + /* Error during parsing. Return NULL command. */ + global_command = (COMMAND *)NULL; +@@ -2142,7 +2142,7 @@ yyreduce: + break; + + case 5: +-#line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 418 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + /* Case of EOF seen by itself. Do ignoreeof or + not. */ +@@ -2153,17 +2153,17 @@ yyreduce: + break; + + case 6: +-#line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 428 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 7: +-#line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 430 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); } + break; + + case 8: +-#line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 434 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; + redir.filename = (yyvsp[(2) - (2)].word); +@@ -2172,7 +2172,7 @@ yyreduce: + break; + + case 9: +-#line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 440 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); +@@ -2181,7 +2181,7 @@ yyreduce: + break; + + case 10: +-#line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 446 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2190,7 +2190,7 @@ yyreduce: + break; + + case 11: +-#line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 452 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2199,7 +2199,7 @@ yyreduce: + break; + + case 12: +-#line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 458 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2208,7 +2208,7 @@ yyreduce: + break; + + case 13: +-#line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 464 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2217,7 +2217,7 @@ yyreduce: + break; + + case 14: +-#line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 470 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; + redir.filename = (yyvsp[(2) - (2)].word); +@@ -2226,7 +2226,7 @@ yyreduce: + break; + + case 15: +-#line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 476 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2235,7 +2235,7 @@ yyreduce: + break; + + case 16: +-#line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 482 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2244,7 +2244,7 @@ yyreduce: + break; + + case 17: +-#line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 488 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; + redir.filename = (yyvsp[(2) - (2)].word); +@@ -2253,7 +2253,7 @@ yyreduce: + break; + + case 18: +-#line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 494 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2262,7 +2262,7 @@ yyreduce: + break; + + case 19: +-#line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 500 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2271,7 +2271,7 @@ yyreduce: + break; + + case 20: +-#line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 506 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); +@@ -2280,7 +2280,7 @@ yyreduce: + break; + + case 21: +-#line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 512 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2289,7 +2289,7 @@ yyreduce: + break; + + case 22: +-#line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 518 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2298,7 +2298,7 @@ yyreduce: + break; + + case 23: +-#line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 524 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); +@@ -2308,7 +2308,7 @@ yyreduce: + break; + + case 24: +-#line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 531 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2318,7 +2318,7 @@ yyreduce: + break; + + case 25: +-#line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 538 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2328,7 +2328,7 @@ yyreduce: + break; + + case 26: +-#line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 545 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); +@@ -2338,7 +2338,7 @@ yyreduce: + break; + + case 27: +-#line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 552 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2348,7 +2348,7 @@ yyreduce: + break; + + case 28: +-#line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 559 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2358,7 +2358,7 @@ yyreduce: + break; + + case 29: +-#line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 566 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); +@@ -2367,7 +2367,7 @@ yyreduce: + break; + + case 30: +-#line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 572 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2376,7 +2376,7 @@ yyreduce: + break; + + case 31: +-#line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 578 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2385,7 +2385,7 @@ yyreduce: + break; + + case 32: +-#line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 584 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; + redir.dest = (yyvsp[(2) - (2)].number); +@@ -2394,7 +2394,7 @@ yyreduce: + break; + + case 33: +-#line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 590 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.dest = (yyvsp[(3) - (3)].number); +@@ -2403,7 +2403,7 @@ yyreduce: + break; + + case 34: +-#line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 596 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.dest = (yyvsp[(3) - (3)].number); +@@ -2412,7 +2412,7 @@ yyreduce: + break; + + case 35: +-#line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 602 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; + redir.dest = (yyvsp[(2) - (2)].number); +@@ -2421,7 +2421,7 @@ yyreduce: + break; + + case 36: +-#line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 608 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.dest = (yyvsp[(3) - (3)].number); +@@ -2430,7 +2430,7 @@ yyreduce: + break; + + case 37: +-#line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 614 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.dest = (yyvsp[(3) - (3)].number); +@@ -2439,7 +2439,7 @@ yyreduce: + break; + + case 38: +-#line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 620 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); +@@ -2448,7 +2448,7 @@ yyreduce: + break; + + case 39: +-#line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 626 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2457,7 +2457,7 @@ yyreduce: + break; + + case 40: +-#line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 632 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2466,7 +2466,7 @@ yyreduce: + break; + + case 41: +-#line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 638 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; + redir.filename = (yyvsp[(2) - (2)].word); +@@ -2475,7 +2475,7 @@ yyreduce: + break; + + case 42: +-#line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 644 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2484,7 +2484,7 @@ yyreduce: + break; + + case 43: +-#line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 650 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); +@@ -2493,7 +2493,7 @@ yyreduce: + break; + + case 44: +-#line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 656 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; + redir.dest = 0; +@@ -2502,7 +2502,7 @@ yyreduce: + break; + + case 45: +-#line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 662 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.dest = 0; +@@ -2511,7 +2511,7 @@ yyreduce: + break; + + case 46: +-#line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 668 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.dest = 0; +@@ -2520,7 +2520,7 @@ yyreduce: + break; + + case 47: +-#line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 674 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; + redir.dest = 0; +@@ -2529,7 +2529,7 @@ yyreduce: + break; + + case 48: +-#line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 680 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.dest = 0; +@@ -2538,7 +2538,7 @@ yyreduce: + break; + + case 49: +-#line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 686 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.dest = 0; +@@ -2547,7 +2547,7 @@ yyreduce: + break; + + case 50: +-#line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 692 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; + redir.filename = (yyvsp[(2) - (2)].word); +@@ -2556,7 +2556,7 @@ yyreduce: + break; + + case 51: +-#line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 698 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; + redir.filename = (yyvsp[(2) - (2)].word); +@@ -2565,29 +2565,29 @@ yyreduce: + break; + + case 52: +-#line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 706 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 53: +-#line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 708 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 54: +-#line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 710 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; } + break; + + case 55: +-#line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 714 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.redirect) = (yyvsp[(1) - (1)].redirect); + } + break; + + case 56: +-#line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 718 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + register REDIRECT *t; + +@@ -2599,27 +2599,27 @@ yyreduce: + break; + + case 57: +-#line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 729 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); } + break; + + case 58: +-#line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 731 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); } + break; + + case 59: +-#line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 735 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); } + break; + + case 60: +-#line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 737 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 61: +-#line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 739 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + COMMAND *tc; + +@@ -2638,72 +2638,72 @@ yyreduce: + break; + + case 62: +-#line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 755 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 63: +-#line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 757 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 64: +-#line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 761 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 65: +-#line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 763 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 66: +-#line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 765 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 67: +-#line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 767 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 68: +-#line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 769 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 69: +-#line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 771 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 70: +-#line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 773 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 71: +-#line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 775 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 72: +-#line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 777 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 73: +-#line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 779 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 74: +-#line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 781 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 75: +-#line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 785 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2711,7 +2711,7 @@ yyreduce: + break; + + case 76: +-#line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 790 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2719,7 +2719,7 @@ yyreduce: + break; + + case 77: +-#line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 795 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2727,7 +2727,7 @@ yyreduce: + break; + + case 78: +-#line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 800 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2735,7 +2735,7 @@ yyreduce: + break; + + case 79: +-#line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 805 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2743,7 +2743,7 @@ yyreduce: + break; + + case 80: +-#line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 810 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2751,7 +2751,7 @@ yyreduce: + break; + + case 81: +-#line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 815 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2759,7 +2759,7 @@ yyreduce: + break; + + case 82: +-#line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 820 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2767,7 +2767,7 @@ yyreduce: + break; + + case 83: +-#line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 827 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); + if (word_top > 0) word_top--; +@@ -2775,7 +2775,7 @@ yyreduce: + break; + + case 84: +-#line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 832 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); + if (word_top > 0) word_top--; +@@ -2783,7 +2783,7 @@ yyreduce: + break; + + case 85: +-#line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 837 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); + if (word_top > 0) word_top--; +@@ -2791,7 +2791,7 @@ yyreduce: + break; + + case 86: +-#line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 842 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); + if (word_top > 0) word_top--; +@@ -2799,7 +2799,7 @@ yyreduce: + break; + + case 87: +-#line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 849 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2807,7 +2807,7 @@ yyreduce: + break; + + case 88: +-#line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 854 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2815,7 +2815,7 @@ yyreduce: + break; + + case 89: +-#line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 859 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2823,7 +2823,7 @@ yyreduce: + break; + + case 90: +-#line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 864 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2831,7 +2831,7 @@ yyreduce: + break; + + case 91: +-#line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 869 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2839,7 +2839,7 @@ yyreduce: + break; + + case 92: +-#line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 874 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2847,7 +2847,7 @@ yyreduce: + break; + + case 93: +-#line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 881 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2855,7 +2855,7 @@ yyreduce: + break; + + case 94: +-#line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 886 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2863,7 +2863,7 @@ yyreduce: + break; + + case 95: +-#line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 891 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]); + if (word_top > 0) word_top--; +@@ -2871,27 +2871,27 @@ yyreduce: + break; + + case 96: +-#line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 898 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); } + break; + + case 97: +-#line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 901 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); } + break; + + case 98: +-#line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 904 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); } + break; + + case 99: +-#line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 908 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 100: +-#line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 910 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + COMMAND *tc; + +@@ -2923,7 +2923,7 @@ yyreduce: + break; + + case 101: +-#line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 941 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command)); + (yyval.command)->flags |= CMD_WANT_SUBSHELL; +@@ -2931,7 +2931,7 @@ yyreduce: + break; + + case 102: +-#line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 948 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command)); + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; +@@ -2939,7 +2939,7 @@ yyreduce: + break; + + case 103: +-#line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 953 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + COMMAND *tc; + +@@ -2959,7 +2959,7 @@ yyreduce: + break; + + case 104: +-#line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 970 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command)); + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; +@@ -2967,7 +2967,7 @@ yyreduce: + break; + + case 105: +-#line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 975 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + COMMAND *tc; + +@@ -2987,7 +2987,7 @@ yyreduce: + break; + + case 106: +-#line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 992 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command))); + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; +@@ -2995,117 +2995,117 @@ yyreduce: + break; + + case 107: +-#line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 999 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); } + break; + + case 108: +-#line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1001 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } + break; + + case 109: +-#line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1003 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } + break; + + case 110: +-#line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1008 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); } + break; + + case 111: +-#line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1012 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); } + break; + + case 112: +-#line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1016 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(2) - (3)].command); } + break; + + case 113: +-#line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1020 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); } + break; + + case 114: +-#line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1022 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } + break; + + case 115: +-#line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1024 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } + break; + + case 117: +-#line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1029 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); } + break; + + case 118: +-#line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1033 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); } + break; + + case 119: +-#line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1035 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); } + break; + + case 120: +-#line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1037 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); } + break; + + case 121: +-#line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1039 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); } + break; + + case 122: +-#line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1043 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 123: +-#line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1045 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 124: +-#line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1047 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 125: +-#line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1049 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 126: +-#line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1051 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 127: +-#line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1053 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 128: +-#line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1057 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 129: +-#line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1059 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); } + break; + + case 130: +-#line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1068 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); + if (need_here_doc) +@@ -3114,14 +3114,14 @@ yyreduce: + break; + + case 132: +-#line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1077 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); + } + break; + + case 134: +-#line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1084 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) + (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (COMMAND *)NULL, '&'); +@@ -3131,17 +3131,17 @@ yyreduce: + break; + + case 136: +-#line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1095 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 137: +-#line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1097 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 138: +-#line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1099 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(1) - (4)].command)->type == cm_connection) + (yyval.command) = connect_async_list ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '&'); +@@ -3151,37 +3151,37 @@ yyreduce: + break; + + case 139: +-#line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1106 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 140: +-#line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1108 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 141: +-#line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1110 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 144: +-#line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1118 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = '\n'; } + break; + + case 145: +-#line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1120 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = ';'; } + break; + + case 146: +-#line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1122 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = yacc_EOF; } + break; + + case 149: +-#line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1136 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = (yyvsp[(1) - (1)].command); + if (need_here_doc) +@@ -3197,7 +3197,7 @@ yyreduce: + break; + + case 150: +-#line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1149 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(1) - (2)].command)->type == cm_connection) + (yyval.command) = connect_async_list ((yyvsp[(1) - (2)].command), (COMMAND *)NULL, '&'); +@@ -3216,7 +3216,7 @@ yyreduce: + break; + + case 151: +-#line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1165 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = (yyvsp[(1) - (2)].command); + if (need_here_doc) +@@ -3232,17 +3232,17 @@ yyreduce: + break; + + case 152: +-#line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1180 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 153: +-#line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1182 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 154: +-#line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1184 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) + (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), '&'); +@@ -3252,22 +3252,22 @@ yyreduce: + break; + + case 155: +-#line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1191 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); } + break; + + case 156: +-#line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1194 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 157: +-#line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1198 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 158: +-#line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1200 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(2) - (2)].command)) + (yyvsp[(2) - (2)].command)->flags ^= CMD_INVERT_RETURN; /* toggle */ +@@ -3276,7 +3276,7 @@ yyreduce: + break; + + case 159: +-#line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1206 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(2) - (2)].command)) + (yyvsp[(2) - (2)].command)->flags |= (yyvsp[(1) - (2)].number); +@@ -3285,7 +3285,7 @@ yyreduce: + break; + + case 160: +-#line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1212 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + ELEMENT x; + +@@ -3305,7 +3305,7 @@ yyreduce: + break; + + case 161: +-#line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1229 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + ELEMENT x; + +@@ -3326,12 +3326,12 @@ yyreduce: + break; + + case 162: +-#line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1249 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); } + break; + + case 163: +-#line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1251 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ + COMMAND *tc; +@@ -3357,22 +3357,22 @@ yyreduce: + break; + + case 164: +-#line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1274 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 165: +-#line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1278 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE; } + break; + + case 166: +-#line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1280 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; + + case 167: +-#line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1282 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; + +@@ -3592,7 +3592,7 @@ yyreturn: + } + + +-#line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" ++#line 1284 "/usr/src/local/bash/bash-4.3-patched/parse.y" + + + /* Initial size to allocate for tokens, and the +@@ -4850,6 +4850,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 +@@ -6339,8 +6349,8 @@ xparse_dolparen (base, string, indp, fla + reset_parser (); + /* reset_parser clears shell_input_line and associated variables */ + restore_input_line_state (&ls); +- 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 |