From de596b5f31e837dcd2ce991245eb5548f12d72ae Mon Sep 17 00:00:00 2001 From: Catalin Popeanga Date: Thu, 9 Oct 2014 14:25:15 +0200 Subject: bash: Fix-for-CVE-2014-6278 This vulnerability exists because of an incomplete fix for CVE-2014-6271, CVE-2014-7169, and CVE-2014-6277 See: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6278 Signed-off-by: Catalin Popeanga --- .../bash/bash-3.2.48/cve-2014-6278.patch | 99 ++ .../recipes-extended/bash/bash/cve-2014-6278.patch | 1191 ++++++++++++++++++++ meta/recipes-extended/bash/bash_3.2.48.bb | 1 + meta/recipes-extended/bash/bash_4.3.bb | 1 + 4 files changed, 1292 insertions(+) create mode 100644 meta/recipes-extended/bash/bash-3.2.48/cve-2014-6278.patch create mode 100644 meta/recipes-extended/bash/bash/cve-2014-6278.patch (limited to 'meta/recipes-extended') diff --git a/meta/recipes-extended/bash/bash-3.2.48/cve-2014-6278.patch b/meta/recipes-extended/bash/bash-3.2.48/cve-2014-6278.patch new file mode 100644 index 0000000000..e51ce05bb5 --- /dev/null +++ b/meta/recipes-extended/bash/bash-3.2.48/cve-2014-6278.patch @@ -0,0 +1,99 @@ +bash: Fix CVE-2014-6278 (shellshock) + +Upstream-status: backport + +Downloaded from: +ftp://ftp.gnu.org/pub/bash/bash-3.2-patches/bash32-057 + +Author: Chet Ramey +Signed-off-by: Catalin Popeanga + + BASH PATCH REPORT + ================= + +Bash-Release: 3.2 +Patch-ID: bash32-057 + +Bug-Reported-by: Michal Zalewski +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. + +--- a/builtins/evalstring.c 2014-09-16 19:08:02.000000000 -0400 ++++ b/builtins/evalstring.c 2014-10-04 15:58:35.000000000 -0400 +@@ -44,4 +44,5 @@ + #include "../redir.h" + #include "../trap.h" ++#include "../bashintl.h" + + #if defined (HISTORY) +@@ -235,10 +236,23 @@ + 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; ++ } + } + +@@ -302,5 +316,8 @@ + + if (flags & SEVAL_ONECMD) +- break; ++ { ++ reset_parser (); ++ break; ++ } + } + } +--- a/parse.y 2014-09-30 19:43:22.000000000 -0400 ++++ b/parse.y 2014-10-04 15:58:35.000000000 -0400 +@@ -2125,4 +2125,14 @@ + } + ++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. */ +--- a/shell.h 2008-04-28 22:00:24.000000000 -0400 ++++ b/shell.h 2014-10-04 15:58:35.000000000 -0400 +@@ -161,4 +161,6 @@ + + /* 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 *)); diff --git a/meta/recipes-extended/bash/bash/cve-2014-6278.patch b/meta/recipes-extended/bash/bash/cve-2014-6278.patch new file mode 100644 index 0000000000..fdce6d92a5 --- /dev/null +++ b/meta/recipes-extended/bash/bash/cve-2014-6278.patch @@ -0,0 +1,1191 @@ +bash: Fix CVE-2014-6278 (shellshock) + +Upstream-status: backport + +Downloaded from: +ftp://ftp.gnu.org/pub/bash/bash-4.3-patches/bash43-030 + +Author: Chet Ramey +Signed-off-by: Catalin Popeanga + + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-030 + +Bug-Reported-by: Michal Zalewski +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +When bash is parsing a function definition that contains a here-document +delimited by end-of-file (or end-of-string), it leaves the closing delimiter +uninitialized. This can result in an invalid memory access when the parsed +function is later copied. + +--- a/builtins/evalstring.c 2014-10-01 12:57:47.000000000 -0400 ++++ b/builtins/evalstring.c 2014-10-03 11:57:04.000000000 -0400 +@@ -309,10 +313,23 @@ + 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; ++ } + } + +@@ -379,5 +396,8 @@ + + if (flags & SEVAL_ONECMD) +- break; ++ { ++ reset_parser (); ++ break; ++ } + } + } +--- a/parse.y 2014-10-01 12:58:43.000000000 -0400 ++++ b/parse.y 2014-10-03 14:48:59.000000000 -0400 +@@ -2539,4 +2539,14 @@ + } + ++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. */ +@@ -4028,6 +4053,6 @@ + /* 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 +--- a/shell.h 2014-10-01 12:57:39.000000000 -0400 ++++ b/shell.h 2014-10-03 14:49:12.000000000 -0400 +@@ -181,4 +181,6 @@ + + /* 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 *)); +--- a/y.tab.c 2014-10-01 13:09:46.000000000 -0400 ++++ b/y.tab.c 2014-10-04 19:26:22.000000000 -0400 +@@ -169,5 +169,5 @@ + + /* 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" +@@ -498,5 +498,5 @@ + #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. */ +@@ -2099,5 +2099,5 @@ + { + 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 +@@ -2113,5 +2113,5 @@ + + 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 +@@ -2125,5 +2125,5 @@ + + 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. */ +@@ -2143,5 +2143,5 @@ + + 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 +@@ -2154,15 +2154,15 @@ + + 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; +@@ -2173,5 +2173,5 @@ + + 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; +@@ -2182,5 +2182,5 @@ + + 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); +@@ -2191,5 +2191,5 @@ + + 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); +@@ -2200,5 +2200,5 @@ + + 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); +@@ -2209,5 +2209,5 @@ + + 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); +@@ -2218,5 +2218,5 @@ + + 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; +@@ -2227,5 +2227,5 @@ + + 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); +@@ -2236,5 +2236,5 @@ + + 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); +@@ -2245,5 +2245,5 @@ + + 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; +@@ -2254,5 +2254,5 @@ + + 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); +@@ -2263,5 +2263,5 @@ + + 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); +@@ -2272,5 +2272,5 @@ + + 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; +@@ -2281,5 +2281,5 @@ + + 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); +@@ -2290,5 +2290,5 @@ + + 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); +@@ -2299,5 +2299,5 @@ + + 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; +@@ -2309,5 +2309,5 @@ + + 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); +@@ -2319,5 +2319,5 @@ + + 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); +@@ -2329,5 +2329,5 @@ + + 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; +@@ -2339,5 +2339,5 @@ + + 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); +@@ -2349,5 +2349,5 @@ + + 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); +@@ -2359,5 +2359,5 @@ + + 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; +@@ -2368,5 +2368,5 @@ + + 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); +@@ -2377,5 +2377,5 @@ + + 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); +@@ -2386,5 +2386,5 @@ + + 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; +@@ -2395,5 +2395,5 @@ + + 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); +@@ -2404,5 +2404,5 @@ + + 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); +@@ -2413,5 +2413,5 @@ + + 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; +@@ -2422,5 +2422,5 @@ + + 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); +@@ -2431,5 +2431,5 @@ + + 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); +@@ -2440,5 +2440,5 @@ + + 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; +@@ -2449,5 +2449,5 @@ + + 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); +@@ -2458,5 +2458,5 @@ + + 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); +@@ -2467,5 +2467,5 @@ + + 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; +@@ -2476,5 +2476,5 @@ + + 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); +@@ -2485,5 +2485,5 @@ + + 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); +@@ -2494,5 +2494,5 @@ + + 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; +@@ -2503,5 +2503,5 @@ + + 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); +@@ -2512,5 +2512,5 @@ + + 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); +@@ -2521,5 +2521,5 @@ + + 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; +@@ -2530,5 +2530,5 @@ + + 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); +@@ -2539,5 +2539,5 @@ + + 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); +@@ -2548,5 +2548,5 @@ + + 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; +@@ -2557,5 +2557,5 @@ + + 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; +@@ -2566,20 +2566,20 @@ + + 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); +@@ -2588,5 +2588,5 @@ + + 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; +@@ -2600,25 +2600,25 @@ + + 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; +@@ -2639,70 +2639,70 @@ + + 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]); +@@ -2712,5 +2712,5 @@ + + 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]); +@@ -2720,5 +2720,5 @@ + + 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]); +@@ -2728,5 +2728,5 @@ + + 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]); +@@ -2736,5 +2736,5 @@ + + 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]); +@@ -2744,5 +2744,5 @@ + + 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]); +@@ -2752,5 +2752,5 @@ + + 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]); +@@ -2760,5 +2760,5 @@ + + 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]); +@@ -2768,5 +2768,5 @@ + + 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); +@@ -2776,5 +2776,5 @@ + + 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); +@@ -2784,5 +2784,5 @@ + + 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); +@@ -2792,5 +2792,5 @@ + + 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); +@@ -2800,5 +2800,5 @@ + + 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]); +@@ -2808,5 +2808,5 @@ + + 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]); +@@ -2816,5 +2816,5 @@ + + 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]); +@@ -2824,5 +2824,5 @@ + + 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]); +@@ -2832,5 +2832,5 @@ + + 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]); +@@ -2840,5 +2840,5 @@ + + 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]); +@@ -2848,5 +2848,5 @@ + + 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]); +@@ -2856,5 +2856,5 @@ + + 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]); +@@ -2864,5 +2864,5 @@ + + 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]); +@@ -2872,25 +2872,25 @@ + + 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; +@@ -2924,5 +2924,5 @@ + + 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)); +@@ -2932,5 +2932,5 @@ + + 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)); +@@ -2940,5 +2940,5 @@ + + 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; +@@ -2960,5 +2960,5 @@ + + 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)); +@@ -2968,5 +2968,5 @@ + + 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; +@@ -2988,5 +2988,5 @@ + + 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))); +@@ -2996,115 +2996,115 @@ + + 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); +@@ -3115,5 +3115,5 @@ + + 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); +@@ -3122,5 +3122,5 @@ + + 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) +@@ -3132,15 +3132,15 @@ + + 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) +@@ -3152,35 +3152,35 @@ + + 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); +@@ -3198,5 +3198,5 @@ + + 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) +@@ -3217,5 +3217,5 @@ + + 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); +@@ -3233,15 +3233,15 @@ + + 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) +@@ -3253,20 +3253,20 @@ + + 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)) +@@ -3277,5 +3277,5 @@ + + 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)) +@@ -3286,5 +3286,5 @@ + + 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; +@@ -3306,5 +3306,5 @@ + + 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; +@@ -3327,10 +3327,10 @@ + + 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 */ +@@ -3358,20 +3358,20 @@ + + 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; +@@ -3593,5 +3593,5 @@ + + +-#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" + + +@@ -4851,4 +4851,14 @@ + } + ++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. */ +@@ -6340,6 +6350,6 @@ + /* 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 diff --git a/meta/recipes-extended/bash/bash_3.2.48.bb b/meta/recipes-extended/bash/bash_3.2.48.bb index 4bd97e7116..d642abd305 100644 --- a/meta/recipes-extended/bash/bash_3.2.48.bb +++ b/meta/recipes-extended/bash/bash_3.2.48.bb @@ -17,6 +17,7 @@ SRC_URI = "${GNU_MIRROR}/bash/bash-${PV}.tar.gz;name=tarball \ file://Fix-for-bash-exported-function-namespace-change.patch \ file://cve-2014-7186_cve-2014-7187.patch \ file://cve-2014-6277.patch \ + file://cve-2014-6278.patch \ file://run-ptest \ " diff --git a/meta/recipes-extended/bash/bash_4.3.bb b/meta/recipes-extended/bash/bash_4.3.bb index f36c6a1710..65c61b176d 100644 --- a/meta/recipes-extended/bash/bash_4.3.bb +++ b/meta/recipes-extended/bash/bash_4.3.bb @@ -14,6 +14,7 @@ SRC_URI = "${GNU_MIRROR}/bash/${BPN}-${PV}.tar.gz;name=tarball \ file://Fix-for-bash-exported-function-namespace-change.patch \ file://cve-2014-7186_cve-2014-7187.patch \ file://cve-2014-6277.patch \ + file://cve-2014-6278.patch \ file://run-ptest \ " -- cgit 1.2.3-korg