From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter =?utf-8?q?M=C3=BCller?= To: development@lists.ipfire.org Subject: [PATCH v3 2/2] bash: update to 5.0 (patchlevel 11) Date: Tue, 12 Nov 2019 17:15:00 +0000 Message-ID: <33904b2c-3fa3-95e0-b078-aecdf42745d0@ipfire.org> In-Reply-To: <807b7b73-ef04-af13-1731-f9b1a3c48a81@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6256726416991744590==" List-Id: --===============6256726416991744590== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The third version of this patch also includes patches 1-11 for version 5.0, drops orphaned 4.3 patches, and fixes rootfile mistakes reported by Arne. Please refer to https://tiswww.case.edu/php/chet/bash/bashtop.html for release notes. Cc: Michael Tremer Cc: Arne Fitzenreiter Signed-off-by: Peter M=C3=BCller --- config/rootfiles/common/bash | 6 +- lfs/bash | 10 +- src/patches/bash/bash43-001 | 58 -- src/patches/bash/bash43-002 | 62 -- src/patches/bash/bash43-003 | 48 - src/patches/bash/bash43-004 | 47 - src/patches/bash/bash43-005 | 63 -- src/patches/bash/bash43-006 | 48 - src/patches/bash/bash43-007 | 50 - src/patches/bash/bash43-008 | 188 ---- src/patches/bash/bash43-009 | 64 -- src/patches/bash/bash43-010 | 157 --- src/patches/bash/bash43-011 | 49 - src/patches/bash/bash43-012 | 43 - src/patches/bash/bash43-013 | 66 -- src/patches/bash/bash43-014 | 102 -- src/patches/bash/bash43-015 | 58 -- src/patches/bash/bash43-016 | 132 --- src/patches/bash/bash43-017 | 51 - src/patches/bash/bash43-018 | 44 - src/patches/bash/bash43-019 | 84 -- src/patches/bash/bash43-020 | 110 -- src/patches/bash/bash43-021 | 52 - src/patches/bash/bash43-022 | 56 -- src/patches/bash/bash43-023 | 104 -- src/patches/bash/bash43-024 | 54 - src/patches/bash/bash43-025 | 123 --- src/patches/bash/bash43-026 | 60 -- src/patches/bash/bash43-027 | 221 ----- src/patches/bash/bash43-028 | 2265 ----------------------------------------= -- src/patches/bash/bash43-029 | 59 -- src/patches/bash/bash43-030 | 2064 -------------------------------------- src/patches/bash/bash50-001 | 166 ++++ src/patches/bash/bash50-002 | 113 +++ src/patches/bash/bash50-003 | 239 +++++ src/patches/bash/bash50-004 | 53 + src/patches/bash/bash50-005 | 110 ++ src/patches/bash/bash50-006 | 47 + src/patches/bash/bash50-007 | 62 ++ src/patches/bash/bash50-008 | 68 ++ src/patches/bash/bash50-009 | 42 + src/patches/bash/bash50-010 | 172 ++++ src/patches/bash/bash50-011 | 59 ++ 43 files changed, 1140 insertions(+), 6589 deletions(-) delete mode 100644 src/patches/bash/bash43-001 delete mode 100644 src/patches/bash/bash43-002 delete mode 100644 src/patches/bash/bash43-003 delete mode 100644 src/patches/bash/bash43-004 delete mode 100644 src/patches/bash/bash43-005 delete mode 100644 src/patches/bash/bash43-006 delete mode 100644 src/patches/bash/bash43-007 delete mode 100644 src/patches/bash/bash43-008 delete mode 100644 src/patches/bash/bash43-009 delete mode 100644 src/patches/bash/bash43-010 delete mode 100644 src/patches/bash/bash43-011 delete mode 100644 src/patches/bash/bash43-012 delete mode 100644 src/patches/bash/bash43-013 delete mode 100644 src/patches/bash/bash43-014 delete mode 100644 src/patches/bash/bash43-015 delete mode 100644 src/patches/bash/bash43-016 delete mode 100644 src/patches/bash/bash43-017 delete mode 100644 src/patches/bash/bash43-018 delete mode 100644 src/patches/bash/bash43-019 delete mode 100644 src/patches/bash/bash43-020 delete mode 100644 src/patches/bash/bash43-021 delete mode 100644 src/patches/bash/bash43-022 delete mode 100644 src/patches/bash/bash43-023 delete mode 100644 src/patches/bash/bash43-024 delete mode 100644 src/patches/bash/bash43-025 delete mode 100644 src/patches/bash/bash43-026 delete mode 100644 src/patches/bash/bash43-027 delete mode 100644 src/patches/bash/bash43-028 delete mode 100644 src/patches/bash/bash43-029 delete mode 100644 src/patches/bash/bash43-030 create mode 100644 src/patches/bash/bash50-001 create mode 100644 src/patches/bash/bash50-002 create mode 100644 src/patches/bash/bash50-003 create mode 100644 src/patches/bash/bash50-004 create mode 100644 src/patches/bash/bash50-005 create mode 100644 src/patches/bash/bash50-006 create mode 100644 src/patches/bash/bash50-007 create mode 100644 src/patches/bash/bash50-008 create mode 100644 src/patches/bash/bash50-009 create mode 100644 src/patches/bash/bash50-010 create mode 100644 src/patches/bash/bash50-011 diff --git a/config/rootfiles/common/bash b/config/rootfiles/common/bash index 84f587f3c..66e5a8e73 100644 --- a/config/rootfiles/common/bash +++ b/config/rootfiles/common/bash @@ -1,6 +1,8 @@ bin/sh bin/bash #bin/bashbug +#usr/include/bash +#usr/lib/bash #usr/share/doc/bash #usr/share/doc/bash/CHANGES #usr/share/doc/bash/COMPAT @@ -39,15 +41,15 @@ bin/bash #usr/share/locale/it/LC_MESSAGES/bash.mo #usr/share/locale/ja/LC_MESSAGES/bash.mo #usr/share/locale/lt/LC_MESSAGES/bash.mo +#usr/share/locale/nb/LC_MESSAGES/bash.mo #usr/share/locale/nl/LC_MESSAGES/bash.mo #usr/share/locale/pl/LC_MESSAGES/bash.mo +#usr/share/locale/pt/LC_MESSAGES/bash.mo #usr/share/locale/pt_BR/LC_MESSAGES/bash.mo #usr/share/locale/ro/LC_MESSAGES/bash.mo #usr/share/locale/ru/LC_MESSAGES/bash.mo #usr/share/locale/sk/LC_MESSAGES/bash.mo #usr/share/locale/sl/LC_MESSAGES/bash.mo -#usr/share/locale/sr -#usr/share/locale/sr/LC_MESSAGES #usr/share/locale/sr/LC_MESSAGES/bash.mo #usr/share/locale/sv/LC_MESSAGES/bash.mo #usr/share/locale/tr/LC_MESSAGES/bash.mo diff --git a/lfs/bash b/lfs/bash index 09b4e71e6..79c21896b 100644 --- a/lfs/bash +++ b/lfs/bash @@ -1,7 +1,7 @@ ############################################################################= ### # = # # IPFire.org - A linux based firewall = # -# Copyright (C) 2007-2018 IPFire Team = # +# Copyright (C) 2007-2019 IPFire Team = # # = # # This program is free software: you can redistribute it and/or modify = # # it under the terms of the GNU General Public License as published by = # @@ -24,7 +24,7 @@ =20 include Config =20 -VER =3D 4.3 +VER =3D 5.0 =20 THISAPP =3D bash-$(VER) DL_FILE =3D $(THISAPP).tar.gz @@ -53,7 +53,7 @@ objects =3D $(DL_FILE) =20 $(DL_FILE) =3D $(DL_FROM)/$(DL_FILE) =20 -$(DL_FILE)_MD5 =3D 81348932d5da294953e15d4814c74dd1 +$(DL_FILE)_MD5 =3D 2b44b47b905be16f45709648f671820b =20 install : $(TARGET) =20 @@ -87,8 +87,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) sed -e "s/filename, RTLD_LAZY/filename, RTLD_NOW/" \ -i $(DIR_APP)/builtins/enable.def =20 - for i in $$(seq 1 30); do \ - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash43-$$(printf= "%03d" "$${i}") || exit 1; \ + for i in $$(seq 1 11); do \ + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash50-$$(printf= "%03d" "$${i}") || exit 1; \ done =20 cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash-4.0-paths-1.patch diff --git a/src/patches/bash/bash43-001 b/src/patches/bash/bash43-001 deleted file mode 100644 index ea1c6b265..000000000 --- a/src/patches/bash/bash43-001 +++ /dev/null @@ -1,58 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-001 - -Bug-Reported-by: NBaH -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg000= 92.html - -Bug-Description: - -A missing check for a valid option prevented `test -R' from working. There -is another problem that causes bash to look up the wrong variable name when -processing the argument to `test -R'. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3/test.c 2014-02-04 16:52:58.000000000 -0500 ---- test.c 2014-02-28 21:22:44.000000000 -0500 -*************** -*** 647,652 **** - =20 - case 'R': -! v =3D find_variable (arg); -! return (v && invisible_p (v) =3D=3D 0 && var_isset (v) && nameref_p = (v) ? TRUE : FALSE); - } - =20 ---- 647,652 ---- - =20 - case 'R': -! v =3D find_variable_noref (arg); -! return ((v && invisible_p (v) =3D=3D 0 && var_isset (v) && nameref_p= (v)) ? TRUE : FALSE); - } - =20 -*************** -*** 724,727 **** ---- 724,728 ---- - case 'u': case 'v': case 'w': case 'x': case 'z': - case 'G': case 'L': case 'O': case 'S': case 'N': -+ case 'R': - return (1); - } -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 0 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 1 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-002 b/src/patches/bash/bash43-002 deleted file mode 100644 index 735b7b81a..000000000 --- a/src/patches/bash/bash43-002 +++ /dev/null @@ -1,62 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-002 - -Bug-Reported-by: Moe Tunes -Bug-Reference-ID: <53103F49.3070100(a)gmail.com> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg000= 86.html - -Bug-Description: - -A change to save state while running the DEBUG trap caused pipelines to hang -on systems which need process group synchronization while building pipelines. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3/trap.c 2014-02-05 10:03:21.000000000 -0500 ---- trap.c 2014-02-28 09:51:43.000000000 -0500 -*************** -*** 921,925 **** - =20 - #if defined (JOB_CONTROL) -! save_pipeline (1); /* XXX only provides one save level */ - #endif - =20 ---- 921,926 ---- - =20 - #if defined (JOB_CONTROL) -! if (sig !=3D DEBUG_TRAP) /* run_debug_trap does this */ -! save_pipeline (1); /* XXX only provides one save level */ - #endif - =20 -*************** -*** 941,945 **** - =20 - #if defined (JOB_CONTROL) -! restore_pipeline (1); - #endif - =20 ---- 942,947 ---- - =20 - #if defined (JOB_CONTROL) -! if (sig !=3D DEBUG_TRAP) /* run_debug_trap does this */ -! restore_pipeline (1); - #endif - =20 -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 1 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 2 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-003 b/src/patches/bash/bash43-003 deleted file mode 100644 index 0f32f410d..000000000 --- a/src/patches/bash/bash43-003 +++ /dev/null @@ -1,48 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-003 - -Bug-Reported-by: Anatol Pomozov -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2014-03/ms= g00010.html - -Bug-Description: - -When in callback mode, some readline commands can cause readline to seg -fault by passing invalid contexts to callback functions. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3/lib/readline/readline.c 2013-10-28 14:58:06.000000000 -0400 ---- lib/readline/readline.c 2014-03-10 14:15:02.000000000 -0400 -*************** -*** 745,749 **** - =20 - RL_CHECK_SIGNALS (); -! if (r =3D=3D 0) /* success! */ - { - _rl_keyseq_chain_dispose (); ---- 745,750 ---- - =20 - RL_CHECK_SIGNALS (); -! /* We only treat values < 0 specially to simulate recursion. */ -! if (r >=3D 0 || (r =3D=3D -1 && (cxt->flags & KSEQ_SUBSEQ) =3D=3D 0)) /*= success! or failure! */ - { - _rl_keyseq_chain_dispose (); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 2 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 3 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-004 b/src/patches/bash/bash43-004 deleted file mode 100644 index 010f04a2a..000000000 --- a/src/patches/bash/bash43-004 +++ /dev/null @@ -1,47 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-004 - -Bug-Reported-by: Daan van Rossum -Bug-Reference-ID: <20140307072523.GA14250(a)flash.uchicago.edu> -Bug-Reference-URL:=09 - -Bug-Description: - -The `.' command in vi mode cannot undo multi-key commands beginning with -`c', `d', and `y' (command plus motion specifier). - -Patch (apply with `patch -p0'): - -*** ../bash-4.3/lib/readline/readline.c 2013-10-28 14:58:06.000000000 -0400 ---- lib/readline/readline.c 2014-03-07 15:20:33.000000000 -0500 -*************** -*** 965,969 **** - if (rl_editing_mode =3D=3D vi_mode && _rl_keymap =3D=3D vi_movement_keym= ap && - key !=3D ANYOTHERKEY && -! rl_key_sequence_length =3D=3D 1 && /* XXX */ - _rl_vi_textmod_command (key)) - _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); ---- 965,969 ---- - if (rl_editing_mode =3D=3D vi_mode && _rl_keymap =3D=3D vi_movement_keym= ap && - key !=3D ANYOTHERKEY && -! _rl_dispatching_keymap =3D=3D vi_movement_keymap && - _rl_vi_textmod_command (key)) - _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 3 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 4 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-005 b/src/patches/bash/bash43-005 deleted file mode 100644 index bcd40697c..000000000 --- a/src/patches/bash/bash43-005 +++ /dev/null @@ -1,63 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-005 - -Bug-Reported-by: David Sines -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg000= 37.html - -Bug-Description: - -When in Posix mode, bash did not correctly interpret the ANSI-C-style -$'...' quoting mechanism when performing pattern substitution word -expansions within double quotes. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3/parse.y 2014-02-11 09:42:10.000000000 -0500 ---- parse.y 2014-03-07 20:57:15.000000000 -0500 -*************** -*** 3399,3403 **** - unescaped double-quotes or single-quotes, if any, shall occur." */ - /* This was changed in Austin Group Interp 221 */ -! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbr= ace_state !=3D DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) &= & ch =3D=3D '\'') - continue; - =20 ---- 3399,3403 ---- - unescaped double-quotes or single-quotes, if any, shall occur." */ - /* This was changed in Austin Group Interp 221 */ -! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbr= ace_state !=3D DOLBRACE_QUOTE && dolbrace_state !=3D DOLBRACE_QUOTE2 && (flag= s & P_DQUOTE) && (flags & P_DOLBRACE) && ch =3D=3D '\'') - continue; - =20 -*** ../bash-4.3/y.tab.c 2014-02-11 10:57:47.000000000 -0500 ---- y.tab.c 2014-03-28 10:41:15.000000000 -0400 -*************** -*** 5711,5715 **** - unescaped double-quotes or single-quotes, if any, shall occur." */ - /* This was changed in Austin Group Interp 221 */ -! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbr= ace_state !=3D DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) &= & ch =3D=3D '\'') - continue; - =20 ---- 5711,5715 ---- - unescaped double-quotes or single-quotes, if any, shall occur." */ - /* This was changed in Austin Group Interp 221 */ -! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbr= ace_state !=3D DOLBRACE_QUOTE && dolbrace_state !=3D DOLBRACE_QUOTE2 && (flag= s & P_DQUOTE) && (flags & P_DOLBRACE) && ch =3D=3D '\'') - continue; - =20 -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 4 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 5 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-006 b/src/patches/bash/bash43-006 deleted file mode 100644 index 24ff057a5..000000000 --- a/src/patches/bash/bash43-006 +++ /dev/null @@ -1,48 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-006 - -Bug-Reported-by: Eduardo A . Bustamante Lopez -Bug-Reference-ID: <20140228170013.GA16015(a)dualbus.me> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg000= 91.html - -Bug-Description: - -A shell that started with job control active but was not interactive left -the terminal in the wrong process group when exiting, causing its parent -shell to get a stop signal when it attempted to read from the terminal. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3/jobs.c 2014-01-10 09:05:34.000000000 -0500 ---- jobs.c 2014-03-02 18:05:09.000000000 -0500 -*************** -*** 4375,4379 **** - end_job_control () - { -! if (interactive_shell) /* XXX - should it be interactive? */ - { - terminate_stopped_jobs (); ---- 4375,4379 ---- - end_job_control () - { -! if (interactive_shell || job_control) /* XXX - should it be just job_co= ntrol? */ - { - terminate_stopped_jobs (); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 5 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 6 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-007 b/src/patches/bash/bash43-007 deleted file mode 100644 index 0d62c9ec6..000000000 --- a/src/patches/bash/bash43-007 +++ /dev/null @@ -1,50 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-007 - -Bug-Reported-by: geir.hauge(a)gmail.com -Bug-Reference-ID: <20140318093650.B181C1C5B0B(a)gina.itea.ntnu.no> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg000= 95.html - -Bug-Description: - -Using compound assignments for associative arrays like - -assoc=3D( [x]=3D [y]=3Dbar ) - -left the value corresponding to the key `x' NULL. This caused subsequent -lookups to interpret it as unset. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3/arrayfunc.c 2013-08-02 16:19:59.000000000 -0400 ---- arrayfunc.c 2014-03-18 11:08:15.000000000 -0400 -*************** -*** 598,601 **** ---- 598,606 ---- - { - val =3D expand_assignment_string_to_string (val, 0); -+ if (val =3D=3D 0) -+ { -+ val =3D (char *)xmalloc (1); -+ val[0] =3D '\0'; /* like do_assignment_internal */ -+ } - free_val =3D 1; - } -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 6 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 7 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-008 b/src/patches/bash/bash43-008 deleted file mode 100644 index 0ae7c9522..000000000 --- a/src/patches/bash/bash43-008 +++ /dev/null @@ -1,188 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-008 - -Bug-Reported-by: Stephane Chazelas -Bug-Reference-ID: <20140318135901.GB22158(a)chaz.gmail.com> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg000= 98.html - -Bug-Description: - -Some extended glob patterns incorrectly matched filenames with a leading -dot, regardless of the setting of the `dotglob' option. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3/lib/glob/gmisc.c 2013-10-28 14:45:25.000000000 -0400 ---- lib/glob/gmisc.c 2014-03-19 09:16:08.000000000 -0400 -*************** -*** 211,214 **** ---- 211,215 ---- - case '!': - case '@': -+ case '?': - return (pat[1] =3D=3D LPAREN); - default: -*** ../bash-4.3/lib/glob/glob.c 2014-01-31 21:43:51.000000000 -0500 ---- lib/glob/glob.c 2014-03-20 09:01:26.000000000 -0400 -*************** -*** 180,202 **** - int flags; - { -! char *pp, *pe, *t; -! int n, r; - =20 - pp =3D pat + 2; -! pe =3D pp + strlen (pp) - 1; /*(*/ -! if (*pe !=3D ')') -! return 0; -! if ((t =3D strchr (pp, '|')) =3D=3D 0) /* easy case first */ - { - *pe =3D '\0'; - r =3D skipname (pp, dname, flags); /*(*/ - *pe =3D ')'; - return r; - } - while (t =3D glob_patscan (pp, pe, '|')) - { - n =3D t[-1]; - t[-1] =3D '\0'; - r =3D skipname (pp, dname, flags); - t[-1] =3D n; - if (r =3D=3D 0) /* if any pattern says not skip, we don't skip */ ---- 180,215 ---- - int flags; - { -! char *pp, *pe, *t, *se; -! int n, r, negate; - =20 -+ negate =3D *pat =3D=3D '!'; - pp =3D pat + 2; -! se =3D pp + strlen (pp) - 1; /* end of string */ -! pe =3D glob_patscan (pp, se, 0); /* end of extglob pattern (( */ -! /* we should check for invalid extglob pattern here */ -! /* if pe !=3D se we have more of the pattern at the end of the extglob -! pattern. Check the easy case first ( */ -! if (pe =3D=3D se && *pe =3D=3D ')' && (t =3D strchr (pp, '|')) =3D=3D 0) - { - *pe =3D '\0'; -+ #if defined (HANDLE_MULTIBYTE) -+ r =3D mbskipname (pp, dname, flags); -+ #else - r =3D skipname (pp, dname, flags); /*(*/ -+ #endif - *pe =3D ')'; - return r; - } -+=20 -+ /* check every subpattern */ - while (t =3D glob_patscan (pp, pe, '|')) - { - n =3D t[-1]; - t[-1] =3D '\0'; -+ #if defined (HANDLE_MULTIBYTE) -+ r =3D mbskipname (pp, dname, flags); -+ #else - r =3D skipname (pp, dname, flags); -+ #endif - t[-1] =3D n; - if (r =3D=3D 0) /* if any pattern says not skip, we don't skip */ -*************** -*** 205,219 **** - } /*(*/ - =20 -! if (pp =3D=3D pe) /* glob_patscan might find end of pattern */ - return r; - =20 -! *pe =3D '\0'; -! # if defined (HANDLE_MULTIBYTE) -! r =3D mbskipname (pp, dname, flags); /*(*/ -! # else -! r =3D skipname (pp, dname, flags); /*(*/ -! # endif -! *pe =3D ')'; -! return r; - } - #endif ---- 218,227 ---- - } /*(*/ - =20 -! /* glob_patscan might find end of pattern */ -! if (pp =3D=3D se) - return r; - =20 -! /* but if it doesn't then we didn't match a leading dot */ -! return 0; - } - #endif -*************** -*** 278,289 **** - { - #if EXTENDED_GLOB -! wchar_t *pp, *pe, *t, n; -! int r; - =20 - pp =3D pat + 2; -! pe =3D pp + wcslen (pp) - 1; /*(*/ -! if (*pe !=3D L')') -! return 0; -! if ((t =3D wcschr (pp, L'|')) =3D=3D 0) - { - *pe =3D L'\0'; ---- 286,298 ---- - { - #if EXTENDED_GLOB -! wchar_t *pp, *pe, *t, n, *se; -! int r, negate; - =20 -+ negate =3D *pat =3D=3D L'!'; - pp =3D pat + 2; -! se =3D pp + wcslen (pp) - 1; /*(*/ -! pe =3D glob_patscan_wc (pp, se, 0); -!=20 -! if (pe =3D=3D se && *pe =3D=3D ')' && (t =3D wcschr (pp, L'|')) =3D=3D 0) - { - *pe =3D L'\0'; -*************** -*** 292,295 **** ---- 301,306 ---- - return r; - } -+=20 -+ /* check every subpattern */ - while (t =3D glob_patscan_wc (pp, pe, '|')) - { -*************** -*** 306,313 **** - return r; - =20 -! *pe =3D L'\0'; -! r =3D wchkname (pp, dname); /*(*/ -! *pe =3D L')'; -! return r; - #else - return (wchkname (pat, dname)); ---- 317,322 ---- - return r; - =20 -! /* but if it doesn't then we didn't match a leading dot */ -! return 0; - #else - return (wchkname (pat, dname)); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 7 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 8 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-009 b/src/patches/bash/bash43-009 deleted file mode 100644 index 015835cde..000000000 --- a/src/patches/bash/bash43-009 +++ /dev/null @@ -1,64 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-009 - -Bug-Reported-by: Matthias Klose -Bug-Reference-ID: <53346FC8.6090005(a)debian.org> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg001= 71.html - -Bug-Description: - -There is a problem with unsigned sign extension when attempting to reallocate -the input line when it is fewer than 3 characters long and there has been a -history expansion. The sign extension causes the shell to not reallocate the -line, which results in a segmentation fault when it writes past the end. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/parse.y 2014-02-11 09:42:10.000000000 -0500 ---- parse.y 2014-03-27 16:33:29.000000000 -0400 -*************** -*** 2425,2429 **** - if (shell_input_line_terminator !=3D EOF) - { -! if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_in= put_line_size - 3) - shell_input_line =3D (char *)xrealloc (shell_input_line, - 1 + (shell_input_line_size +=3D 2)); ---- 2425,2429 ---- - if (shell_input_line_terminator !=3D EOF) - { -! if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > she= ll_input_line_size)) - shell_input_line =3D (char *)xrealloc (shell_input_line, - 1 + (shell_input_line_size +=3D 2)); -*** ../bash-4.3-patched/y.tab.c 2014-03-28 11:17:06.000000000 -0400 ---- y.tab.c 2014-04-07 11:48:31.000000000 -0400 -*************** -*** 4737,4741 **** - if (shell_input_line_terminator !=3D EOF) - { -! if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_in= put_line_size - 3) - shell_input_line =3D (char *)xrealloc (shell_input_line, - 1 + (shell_input_line_size +=3D 2)); ---- 4737,4741 ---- - if (shell_input_line_terminator !=3D EOF) - { -! if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > she= ll_input_line_size)) - shell_input_line =3D (char *)xrealloc (shell_input_line, - 1 + (shell_input_line_size +=3D 2)); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 8 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 9 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-010 b/src/patches/bash/bash43-010 deleted file mode 100644 index 835a96ead..000000000 --- a/src/patches/bash/bash43-010 +++ /dev/null @@ -1,157 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-010 - -Bug-Reported-by: Albert Shih -Bug-Reference-ID: Wed, 5 Mar 2014 23:01:40 +0100 -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg000= 28.html - -Bug-Description: - -Patch (apply with `patch -p0'): - -This patch changes the behavior of programmable completion to compensate -for two assumptions made by the bash-completion package. Bash-4.3 changed -to dequote the argument to programmable completion only under certain -circumstances, to make the behavior of compgen more consistent when run -from the command line -- closer to the behavior when run by a shell function -run as part of programmable completion. Bash-completion can pass quoted -arguments to compgen when the original word to be completed was not quoted, -expecting programmable completion to dequote the word before attempting -completion. - -This patch fixes two cases: - -1. An empty string that bash-completion passes to compgen as a quoted null - string (''). - -2. An unquoted word that bash-completion quotes using single quotes or - backslashes before passing it to compgen. - -In these cases, since readline did not detect a quote character in the origi= nal -word to be completed, bash-4.3=20 - -*** ../bash-4.3/externs.h 2014-01-02 14:58:20.000000000 -0500 ---- externs.h 2014-03-13 14:42:57.000000000 -0400 -*************** -*** 325,328 **** ---- 325,329 ---- - extern char *sh_backslash_quote_for_double_quotes __P((char *)); - extern int sh_contains_shell_metas __P((char *)); -+ extern int sh_contains_quotes __P((char *)); - =20 - /* declarations for functions defined in lib/sh/spell.c */ -*** ../bash-4.3/lib/sh/shquote.c 2013-03-31 21:53:32.000000000 -0400 ---- lib/sh/shquote.c 2014-03-13 14:42:57.000000000 -0400 -*************** -*** 312,313 **** ---- 312,327 ---- - return (0); - } -+=20 -+ int -+ sh_contains_quotes (string) -+ char *string; -+ { -+ char *s; -+=20 -+ for (s =3D string; s && *s; s++) -+ { -+ if (*s =3D=3D '\'' || *s =3D=3D '"' || *s =3D=3D '\\') -+ return 1; -+ } -+ return 0; -+ } -*** ../bash-4.3/pcomplete.c 2013-08-26 15:23:45.000000000 -0400 ---- pcomplete.c 2014-03-25 17:23:23.000000000 -0400 -*************** -*** 184,187 **** ---- 184,188 ---- - COMPSPEC *pcomp_curcs; - const char *pcomp_curcmd; -+ const char *pcomp_curtxt; - =20 - #ifdef DEBUG -*************** -*** 754,757 **** ---- 755,784 ---- - dfn =3D (*rl_filename_dequoting_function) ((char *)text, rl_completion_= quote_character); - } -+ /* Intended to solve a mismatched assumption by bash-completion. If -+ the text to be completed is empty, but bash-completion turns it into -+ a quoted string ('') assuming that this code will dequote it before -+ calling readline, do the dequoting. */ -+ else if (iscompgen && iscompleting && -+ pcomp_curtxt && *pcomp_curtxt =3D=3D 0 && -+ text && (*text =3D=3D '\'' || *text =3D=3D '"') && text[1] =3D=3D = text[0] && text[2] =3D=3D 0 &&=20 -+ rl_filename_dequoting_function) -+ dfn =3D (*rl_filename_dequoting_function) ((char *)text, rl_completion_qu= ote_character); -+ /* Another mismatched assumption by bash-completion. If compgen is = being -+ run as part of bash-completion, and the argument to compgen is not -+ the same as the word originally passed to the programmable complet= ion -+ code, dequote the argument if it has quote characters. It's an -+ attempt to detect when bash-completion is quoting its filename -+ argument before calling compgen. */ -+ /* We could check whether gen_shell_function_matches is in the call -+ stack by checking whether the gen-shell-function-matches tag is in -+ the unwind-protect stack, but there's no function to do that yet. -+ We could simply check whether we're executing in a function by -+ checking variable_context, and may end up doing that. */ -+ else if (iscompgen && iscompleting && rl_filename_dequoting_function= && -+ pcomp_curtxt && text && -+ STREQ (pcomp_curtxt, text) =3D=3D 0 && -+ variable_context && -+ sh_contains_quotes (text)) /* guess */ -+ dfn =3D (*rl_filename_dequoting_function) ((char *)text, rl_completion_qu= ote_character); - else - dfn =3D savestring (text); -*************** -*** 1523,1527 **** - { - COMPSPEC *cs, *oldcs; -! const char *oldcmd; - STRINGLIST *ret; - =20 ---- 1550,1554 ---- - { - COMPSPEC *cs, *oldcs; -! const char *oldcmd, *oldtxt; - STRINGLIST *ret; - =20 -*************** -*** 1546,1552 **** ---- 1573,1581 ---- - oldcs =3D pcomp_curcs; - oldcmd =3D pcomp_curcmd; -+ oldtxt =3D pcomp_curtxt; - =20 - pcomp_curcs =3D cs; - pcomp_curcmd =3D cmd; -+ pcomp_curtxt =3D word; - =20 - ret =3D gen_compspec_completions (cs, cmd, word, start, end, foundp); -*************** -*** 1554,1557 **** ---- 1583,1587 ---- - pcomp_curcs =3D oldcs; - pcomp_curcmd =3D oldcmd; -+ pcomp_curtxt =3D oldtxt; - =20 - /* We need to conditionally handle setting *retryp here */ -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 9 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 10 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-011 b/src/patches/bash/bash43-011 deleted file mode 100644 index cdc1572ee..000000000 --- a/src/patches/bash/bash43-011 +++ /dev/null @@ -1,49 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-011 - -Bug-Reported-by: Egmont Koblinger -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg001= 53.html - -Bug-Description: - -The signal handling changes to bash and readline (to avoid running any code -in a signal handler context) cause the cursor to be placed on the wrong -line of a multi-line command after a ^C interrupts editing. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/lib/readline/display.c 2013-12-27 13:10:56.000000000= -0500 ---- lib/readline/display.c 2014-03-27 11:52:45.000000000 -0400 -*************** -*** 2678,2682 **** - if (_rl_echoing_p) - { -! _rl_move_vert (_rl_vis_botlin); - _rl_vis_botlin =3D 0; - fflush (rl_outstream); ---- 2678,2683 ---- - if (_rl_echoing_p) - { -! if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */ -! _rl_move_vert (_rl_vis_botlin); - _rl_vis_botlin =3D 0; - fflush (rl_outstream); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 10 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 11 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-012 b/src/patches/bash/bash43-012 deleted file mode 100644 index 176fa15bd..000000000 --- a/src/patches/bash/bash43-012 +++ /dev/null @@ -1,43 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-012 - -Bug-Reported-by: Eduardo A. Bustamante L=C3=B3pez -Bug-Reference-ID: <5346B54C.4070205(a)case.edu> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg000= 51.html - -Bug-Description: - -When a SIGCHLD trap runs a command containing a shell builtin while -a script is running `wait' to wait for all running children to complete, -the SIGCHLD trap will not be run once for each child that terminates. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/jobs.c 2014-03-28 10:54:19.000000000 -0400 ---- jobs.c 2014-04-15 08:47:03.000000000 -0400 -*************** -*** 3598,3601 **** ---- 3598,3602 ---- - unwind_protect_pointer (the_pipeline); - unwind_protect_pointer (subst_assign_varlist); -+ unwind_protect_pointer (this_shell_builtin); - =20 - /* We have to add the commands this way because they will be run -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 11 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 12 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-013 b/src/patches/bash/bash43-013 deleted file mode 100644 index 8f4006b48..000000000 --- a/src/patches/bash/bash43-013 +++ /dev/null @@ -1,66 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-013 - -Bug-Reported-by: -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg000= 69.html - -Bug-Description: - -Using reverse-i-search when horizontal scrolling is enabled does not redispl= ay -the entire line containing the successful search results. - -Patch (apply with `patch -p0'): -*** ../bash-4.3-patched/lib/readline/display.c 2014-04-08 18:19:36.000000000= -0400 ---- lib/readline/display.c 2014-04-20 18:32:52.000000000 -0400 -*************** -*** 1638,1642 **** - the spot of first difference is before the end of the invisible chars, - lendiff needs to be adjusted. */ -! if (current_line =3D=3D 0 && !_rl_horizontal_scroll_mode && - current_invis_chars !=3D visible_wrap_offset) - { ---- 1638,1642 ---- - the spot of first difference is before the end of the invisible chars, - lendiff needs to be adjusted. */ -! if (current_line =3D=3D 0 && /* !_rl_horizontal_scroll_mode && */ - current_invis_chars !=3D visible_wrap_offset) - { -*************** -*** 1826,1831 **** - _rl_last_c_pos +=3D bytes_to_insert; - =20 - if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) -! goto clear_rest_of_line; - } - } ---- 1826,1836 ---- - _rl_last_c_pos +=3D bytes_to_insert; - =20 -+ /* XXX - we only want to do this if we are at the end of the line -+ so we move there with _rl_move_cursor_relative */ - if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) -! { -! _rl_move_cursor_relative (ne-new, new); -! goto clear_rest_of_line; -! } - } - } -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 12 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 13 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-014 b/src/patches/bash/bash43-014 deleted file mode 100644 index f8371967f..000000000 --- a/src/patches/bash/bash43-014 +++ /dev/null @@ -1,102 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-014 - -Bug-Reported-by: Greg Wooledge -Bug-Reference-ID: <20140418202123.GB7660(a)eeg.ccf.org> -Bug-Reference-URL: http://lists.gnu.org/archive/html/help-bash/2014-04/msg00= 004.html - -Bug-Description: - -Under certain circumstances, $@ is expanded incorrectly in contexts where -word splitting is not performed. - -Patch (apply with `patch -p0'): -*** ../bash-4.3-patched/subst.c 2014-01-23 16:26:37.000000000 -0500 ---- subst.c 2014-04-19 15:41:26.000000000 -0400 -*************** -*** 3249,3254 **** ---- 3249,3256 ---- - return ((char *)NULL); - =20 -+ expand_no_split_dollar_star =3D 1; - w->flags |=3D W_NOSPLIT2; - l =3D call_expand_word_internal (w, 0, 0, (int *)0, (int *)0); -+ expand_no_split_dollar_star =3D 0; - if (l) - { -*************** -*** 7848,7851 **** ---- 7850,7857 ---- - according to POSIX.2, this expands to a list of the positional - parameters no matter what IFS is set to. */ -+ /* XXX - what to do when in a context where word splitting is not -+ performed? Even when IFS is not the default, posix seems to imply -+ that we behave like unquoted $* ? Maybe we should use PF_NOSPLIT2 -+ here. */ - temp =3D string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quo= ted|Q_DOUBLE_QUOTES) : quoted); - =20 -*************** -*** 8817,8820 **** ---- 8823,8827 ---- - { - char *ifs_chars; -+ char *tstring; - =20 - ifs_chars =3D (quoted_dollar_at || has_dollar_at) ? ifs_value : (cha= r *)NULL; -*************** -*** 8831,8834 **** ---- 8838,8865 ---- - if (split_on_spaces) - list =3D list_string (istring, " ", 1); /* XXX quoted =3D=3D 1? */ -+ /* If we have $@ (has_dollar_at !=3D 0) and we are in a context wher= e we -+ don't want to split the result (W_NOSPLIT2), and we are not quoted, -+ we have already separated the arguments with the first character of -+ $IFS. In this case, we want to return a list with a single word -+ with the separator possibly replaced with a space (it's what other -+ shells seem to do). -+ quoted_dollar_at is internal to this function and is set if we are -+ passed an argument that is unquoted (quoted =3D=3D 0) but we encounter a -+ double-quoted $@ while expanding it. */ -+ else if (has_dollar_at && quoted_dollar_at =3D=3D 0 && ifs_chars && = quoted =3D=3D 0 && (word->flags & W_NOSPLIT2)) -+ { -+ /* Only split and rejoin if we have to */ -+ if (*ifs_chars && *ifs_chars !=3D ' ') -+ { -+ list =3D list_string (istring, *ifs_chars ? ifs_chars : " ", 1); -+ tstring =3D string_list (list); -+ } -+ else -+ tstring =3D istring; -+ tword =3D make_bare_word (tstring); -+ if (tstring !=3D istring) -+ free (tstring); -+ goto set_word_flags; -+ } - else if (has_dollar_at && ifs_chars) - list =3D list_string (istring, *ifs_chars ? ifs_chars : " ", 1); -*************** -*** 8836,8839 **** ---- 8867,8871 ---- - { - tword =3D make_bare_word (istring); -+ set_word_flags: - if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state =3D= =3D WHOLLY_QUOTED)) - tword->flags |=3D W_QUOTED; -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 13 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 14 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-015 b/src/patches/bash/bash43-015 deleted file mode 100644 index 9c4e5ea48..000000000 --- a/src/patches/bash/bash43-015 +++ /dev/null @@ -1,58 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-015 - -Bug-Reported-by: Clark Wang -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg000= 95.html - -Bug-Description: - -When completing directory names, the directory name is dequoted twice. -This causes problems for directories with single and double quotes in -their names. - -Patch (apply with `patch -p0'): -*** ../bash-4.3-patched/bashline.c 2014-02-09 19:56:58.000000000 -0500 ---- bashline.c 2014-04-25 14:57:52.000000000 -0400 -*************** -*** 4168,4174 **** - =20 - qc =3D rl_dispatching ? rl_completion_quote_character : 0; =20 -! dfn =3D bash_dequote_filename ((char *)text, qc); - m1 =3D rl_completion_matches (dfn, rl_filename_completion_function); -! free (dfn); - =20 - if (m1 =3D=3D 0 || m1[0] =3D=3D 0) ---- 4209,4222 ---- - =20 - qc =3D rl_dispatching ? rl_completion_quote_character : 0; =20 -! /* If rl_completion_found_quote !=3D 0, rl_completion_matches will call = the -! filename dequoting function, causing the directory name to be dequoted -! twice. */ -! if (rl_dispatching && rl_completion_found_quote =3D=3D 0) -! dfn =3D bash_dequote_filename ((char *)text, qc); -! else -! dfn =3D (char *)text; - m1 =3D rl_completion_matches (dfn, rl_filename_completion_function); -! if (dfn !=3D text) -! free (dfn); - =20 - if (m1 =3D=3D 0 || m1[0] =3D=3D 0) -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 14 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 15 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-016 b/src/patches/bash/bash43-016 deleted file mode 100644 index 882d5939b..000000000 --- a/src/patches/bash/bash43-016 +++ /dev/null @@ -1,132 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-016 - -Bug-Reported-by: Pierre Gaston -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg001= 00.html - -Bug-Description: - -An extended glob pattern containing a slash (`/') causes the globbing code -to misinterpret it as a directory separator. - -Patch (apply with `patch -p0'): -*** ../bash-4.3-patched/lib/glob/glob.c 2014-03-28 10:54:23.000000000 -0400 ---- lib/glob/glob.c 2014-05-02 10:24:28.000000000 -0400 -*************** -*** 124,127 **** ---- 124,129 ---- - extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int)); - =20 -+ extern char *glob_dirscan __P((char *, int)); -+=20 - /* Compile `glob_loop.c' for single-byte characters. */ - #define CHAR unsigned char -*************** -*** 188,191 **** ---- 190,196 ---- - pe =3D glob_patscan (pp, se, 0); /* end of extglob pattern (( */ - /* we should check for invalid extglob pattern here */ -+ if (pe =3D=3D 0) -+ return 0; -+=20 - /* if pe !=3D se we have more of the pattern at the end of the extglob - pattern. Check the easy case first ( */ -*************** -*** 1016,1020 **** - char **result; - unsigned int result_size; -! char *directory_name, *filename, *dname; - unsigned int directory_len; - int free_dirname; /* flag */ ---- 1021,1025 ---- - char **result; - unsigned int result_size; -! char *directory_name, *filename, *dname, *fn; - unsigned int directory_len; - int free_dirname; /* flag */ -*************** -*** 1032,1035 **** ---- 1037,1052 ---- - /* Find the filename. */ - filename =3D strrchr (pathname, '/'); -+ #if defined (EXTENDED_GLOB) -+ if (filename && extended_glob) -+ { -+ fn =3D glob_dirscan (pathname, '/'); -+ #if DEBUG_MATCHING -+ if (fn !=3D filename) -+ fprintf (stderr, "glob_filename: glob_dirscan: fn (%s) !=3D filename (%s)= \n", fn ? fn : "(null)", filename); -+ #endif -+ filename =3D fn; -+ } -+ #endif -+=20 - if (filename =3D=3D NULL) - { -*** ../bash-4.3-patched/lib/glob/gmisc.c 2014-03-28 10:54:23.000000000 -0400 ---- lib/glob/gmisc.c 2014-05-02 09:35:57.000000000 -0400 -*************** -*** 43,46 **** ---- 43,48 ---- - #define WRPAREN L')' - =20 -+ extern char *glob_patscan __P((char *, char *, int)); -+=20 - /* Return 1 of the first character of WSTRING could match the first - character of pattern WPAT. Wide character version. */ -*************** -*** 376,377 **** ---- 378,410 ---- - return matlen; - } -+=20 -+ /* Skip characters in PAT and return the final occurrence of DIRSEP. This -+ is only called when extended_glob is set, so we have to skip over extgl= ob -+ patterns x(...) */ -+ char * -+ glob_dirscan (pat, dirsep) -+ char *pat; -+ int dirsep; -+ { -+ char *p, *d, *pe, *se; -+=20 -+ d =3D pe =3D se =3D 0; -+ for (p =3D pat; p && *p; p++) -+ { -+ if (extglob_pattern_p (p)) -+ { -+ if (se =3D=3D 0) -+ se =3D p + strlen (p) - 1; -+ pe =3D glob_patscan (p + 2, se, 0); -+ if (pe =3D=3D 0) -+ continue; -+ else if (*pe =3D=3D 0) -+ break; -+ p =3D pe - 1; /* will do increment above */ -+ continue; -+ } -+ if (*p =3D=3D dirsep) -+ d =3D p; -+ } -+ return d; -+ } - -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 15 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 16 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-017 b/src/patches/bash/bash43-017 deleted file mode 100644 index 4016fb934..000000000 --- a/src/patches/bash/bash43-017 +++ /dev/null @@ -1,51 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-017 - -Bug-Reported-by: Dan Douglas -Bug-Reference-ID: <7781746.RhfoTROLxF(a)smorgbox> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-05/msg000= 26.html - -Bug-Description: - -The code that creates local variables should not clear the `invisible' -attribute when returning an existing local variable. Let the code that -actually assigns a value clear it. - -Patch (apply with `patch -p0'): -*** ../bash-4.3-patched/variables.c 2014-02-14 11:55:12.000000000 -0500 ---- variables.c 2014-05-07 10:53:57.000000000 -0400 -*************** -*** 2198,2205 **** - old_var =3D find_variable (name); - if (old_var && local_p (old_var) && old_var->context =3D=3D variable_con= text) -! { -! VUNSETATTR (old_var, att_invisible); /* XXX */ -! return (old_var); -! } - =20 - was_tmpvar =3D old_var && tempvar_p (old_var); ---- 2260,2264 ---- - old_var =3D find_variable (name); - if (old_var && local_p (old_var) && old_var->context =3D=3D variable_con= text) -! return (old_var); - =20 - was_tmpvar =3D old_var && tempvar_p (old_var); - -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 16 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 17 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-018 b/src/patches/bash/bash43-018 deleted file mode 100644 index 39499f663..000000000 --- a/src/patches/bash/bash43-018 +++ /dev/null @@ -1,44 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-018 - -Bug-Reported-by: Geir Hauge -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-05/msg000= 40.html - -Bug-Description: - -When assigning an array variable using the compound assignment syntax, -but using `declare' with the rhs of the compound assignment quoted, the -shell did not mark the variable as visible after successfully performing -the assignment. - -Patch (apply with `patch -p0'): -*** ../bash-4.3-patched/arrayfunc.c 2014-03-28 10:54:21.000000000 -0400 ---- arrayfunc.c 2014-05-12 11:19:00.000000000 -0400 -*************** -*** 180,183 **** ---- 180,184 ---- - FREE (newval); - =20 -+ VUNSETATTR (entry, att_invisible); /* no longer invisible */ - return (entry); - } - -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 17 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 18 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-019 b/src/patches/bash/bash43-019 deleted file mode 100644 index a93714beb..000000000 --- a/src/patches/bash/bash43-019 +++ /dev/null @@ -1,84 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-019 - -Bug-Reported-by: John Lenton -Bug-Reference-ID: -Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/13174= 76 - -Bug-Description: - -The -t timeout option to `read' does not work when the -e option is used. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/lib/readline/input.c 2014-01-10 15:07:08.000000000 -= 0500 ---- lib/readline/input.c 2014-05-22 18:40:59.000000000 -0400 -*************** -*** 535,540 **** ---- 538,551 ---- - else if (_rl_caught_signal =3D=3D SIGHUP || _rl_caught_signal =3D=3D= SIGTERM) - return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF); -+ /* keyboard-generated signals of interest */ - else if (_rl_caught_signal =3D=3D SIGINT || _rl_caught_signal =3D=3D= SIGQUIT) - RL_CHECK_SIGNALS (); -+ /* non-keyboard-generated signals of interest */ -+ else if (_rl_caught_signal =3D=3D SIGALRM -+ #if defined (SIGVTALRM) -+ || _rl_caught_signal =3D=3D SIGVTALRM -+ #endif -+ ) -+ RL_CHECK_SIGNALS (); - =20 - if (rl_signal_event_hook) -*** ../bash-4.3-patched/builtins/read.def 2013-09-02 11:54:00.000000000 -0400 ---- builtins/read.def 2014-05-08 11:43:35.000000000 -0400 -*************** -*** 443,447 **** - #if defined (READLINE) - if (edit) -! add_unwind_protect (reset_attempted_completion_function, (char *)NULL); - #endif - falarm (tmsec, tmusec); ---- 443,450 ---- - #if defined (READLINE) - if (edit) -! { -! add_unwind_protect (reset_attempted_completion_function, (char *)NULL); -! add_unwind_protect (bashline_reset_event_hook, (char *)NULL); -! } - #endif - falarm (tmsec, tmusec); -*************** -*** 1022,1025 **** ---- 1025,1029 ---- - old_attempted_completion_function =3D rl_attempted_completion_function; - rl_attempted_completion_function =3D (rl_completion_func_t *)NULL; -+ bashline_set_event_hook (); - if (itext) - { -*************** -*** 1033,1036 **** ---- 1037,1041 ---- - rl_attempted_completion_function =3D old_attempted_completion_function; - old_attempted_completion_function =3D (rl_completion_func_t *)NULL; -+ bashline_reset_event_hook (); - =20 - if (ret =3D=3D 0) -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 18 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 19 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-020 b/src/patches/bash/bash43-020 deleted file mode 100644 index 5f533ef8d..000000000 --- a/src/patches/bash/bash43-020 +++ /dev/null @@ -1,110 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-020 - -Bug-Reported-by: Jared Yanovich -Bug-Reference-ID: <20140417073654.GB26875(a)nightderanger.psc.edu> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg000= 65.html - -Bug-Description: - -When PS2 contains a command substitution, here-documents entered in an -interactive shell can sometimes cause a segmentation fault. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/shell.h 2012-12-25 21:11:01.000000000 -0500 ---- shell.h 2014-06-03 09:24:28.000000000 -0400 -*************** -*** 169,173 **** - int expand_aliases; - int echo_input_at_read; -! =20 - } sh_parser_state_t; - =20 ---- 169,174 ---- - int expand_aliases; - int echo_input_at_read; -! int need_here_doc; -!=20 - } sh_parser_state_t; - =20 -*** ../bash-4.3-patched/parse.y 2014-05-14 09:16:40.000000000 -0400 ---- parse.y 2014-04-30 09:27:59.000000000 -0400 -*************** -*** 2643,2647 **** - =20 - r =3D 0; -! while (need_here_doc) - { - parser_state |=3D PST_HEREDOC; ---- 2643,2647 ---- - =20 - r =3D 0; -! while (need_here_doc > 0) - { - parser_state |=3D PST_HEREDOC; -*************** -*** 6076,6079 **** ---- 6076,6080 ---- - ps->expand_aliases =3D expand_aliases; - ps->echo_input_at_read =3D echo_input_at_read; -+ ps->need_here_doc =3D need_here_doc; - =20 - ps->token =3D token; -*************** -*** 6124,6127 **** ---- 6125,6129 ---- - expand_aliases =3D ps->expand_aliases; - echo_input_at_read =3D ps->echo_input_at_read; -+ need_here_doc =3D ps->need_here_doc; - =20 - FREE (token); -*** ../bash-4.3-patched/y.tab.c 2014-04-07 11:56:12.000000000 -0400 ---- y.tab.c 2014-07-30 09:55:57.000000000 -0400 -*************** -*** 4955,4959 **** - =20 - r =3D 0; -! while (need_here_doc) - { - parser_state |=3D PST_HEREDOC; ---- 5151,5155 ---- - =20 - r =3D 0; -! while (need_here_doc > 0) - { - parser_state |=3D PST_HEREDOC; -*************** -*** 8388,8391 **** ---- 8584,8588 ---- - ps->expand_aliases =3D expand_aliases; - ps->echo_input_at_read =3D echo_input_at_read; -+ ps->need_here_doc =3D need_here_doc; - =20 - ps->token =3D token; -*************** -*** 8436,8439 **** ---- 8633,8637 ---- - expand_aliases =3D ps->expand_aliases; - echo_input_at_read =3D ps->echo_input_at_read; -+ need_here_doc =3D ps->need_here_doc; - =20 - FREE (token); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 19 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 20 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-021 b/src/patches/bash/bash43-021 deleted file mode 100644 index fd1c945ec..000000000 --- a/src/patches/bash/bash43-021 +++ /dev/null @@ -1,52 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-021 - -Bug-Reported-by: Jared Yanovich -Bug-Reference-ID: <20140625225019.GJ17044(a)nightderanger.psc.edu> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg000= 70.html - -Bug-Description: - -When the readline `revert-all-at-newline' option is set, pressing newline -when the current line is one retrieved from history results in a double free -and a segmentation fault. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/lib/readline/misc.c 2012-09-01 18:03:11.000000000 -0= 400 ---- lib/readline/misc.c 2014-06-30 13:41:19.000000000 -0400 -*************** -*** 462,465 **** ---- 462,466 ---- - /* Set up rl_line_buffer and other variables from history entry */ - rl_replace_from_history (entry, 0); /* entry->line is now current */ -+ entry->data =3D 0; /* entry->data is now current undo list */ - /* Undo all changes to this history entry */ - while (rl_undo_list) -*************** -*** 469,473 **** - FREE (entry->line); - entry->line =3D savestring (rl_line_buffer); -- entry->data =3D 0; - } - entry =3D previous_history (); ---- 470,473 ---- - -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 20 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 21 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-022 b/src/patches/bash/bash43-022 deleted file mode 100644 index 7ce39ec0a..000000000 --- a/src/patches/bash/bash43-022 +++ /dev/null @@ -1,56 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-022 - -Bug-Reported-by: scorp.dev.null(a)gmail.com -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg000= 61.html - -Bug-Description: - -Using nested pipelines within loops with the `lastpipe' option set can result -in a segmentation fault. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/execute_cmd.c 2014-01-31 10:54:52.000000000 -0500 ---- execute_cmd.c 2014-06-19 08:05:49.000000000 -0400 -*************** -*** 2410,2414 **** - lstdin =3D wait_for (lastpid); - #if defined (JOB_CONTROL) -! exec_result =3D job_exit_status (lastpipe_jid); - #endif - unfreeze_jobs_list (); ---- 2425,2438 ---- - lstdin =3D wait_for (lastpid); - #if defined (JOB_CONTROL) -! /* If wait_for removes the job from the jobs table, use result of la= st -! command as pipeline's exit status as usual. The jobs list can get -! frozen and unfrozen at inconvenient times if there are multiple pipelines -! running simultaneously. */ -! if (INVALID_JOB (lastpipe_jid) =3D=3D 0) -! exec_result =3D job_exit_status (lastpipe_jid); -! else if (pipefail_opt) -! exec_result =3D exec_result | lstdin; /* XXX */ -! /* otherwise we use exec_result */ -! =20 - #endif - unfreeze_jobs_list (); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 21 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 22 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-023 b/src/patches/bash/bash43-023 deleted file mode 100644 index d1e4e9d7c..000000000 --- a/src/patches/bash/bash43-023 +++ /dev/null @@ -1,104 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-023 - -Bug-Reported-by: Tim Friske -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg000= 56.html - -Bug-Description: - -Bash does not correctly parse process substitution constructs that contain -unbalanced parentheses as part of the contained command. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/subst.h 2014-01-11 21:02:27.000000000 -0500 ---- subst.h 2014-07-20 17:25:01.000000000 -0400 -*************** -*** 83,87 **** - Start extracting at (SINDEX) as if we had just seen "<(". - Make (SINDEX) get the position just after the matching ")". */ -! extern char *extract_process_subst __P((char *, char *, int *)); - #endif /* PROCESS_SUBSTITUTION */ - =20 ---- 83,87 ---- - Start extracting at (SINDEX) as if we had just seen "<(". - Make (SINDEX) get the position just after the matching ")". */ -! extern char *extract_process_subst __P((char *, char *, int *, int)); - #endif /* PROCESS_SUBSTITUTION */ - =20 -*** ../bash-4.3-patched/subst.c 2014-05-15 08:26:45.000000000 -0400 ---- subst.c 2014-07-20 17:26:44.000000000 -0400 -*************** -*** 1193,1202 **** - Make (SINDEX) get the position of the matching ")". */ /*))*/ - char * -! extract_process_subst (string, starter, sindex) - char *string; - char *starter; - int *sindex; - { - return (extract_delimited_string (string, sindex, starter, "(", ")", SX_= COMMAND)); - } - #endif /* PROCESS_SUBSTITUTION */ ---- 1193,1208 ---- - Make (SINDEX) get the position of the matching ")". */ /*))*/ - char * -! extract_process_subst (string, starter, sindex, xflags) - char *string; - char *starter; - int *sindex; -+ int xflags; - { -+ #if 0 - return (extract_delimited_string (string, sindex, starter, "(", ")", SX_= COMMAND)); -+ #else -+ xflags |=3D (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0); -+ return (xparse_dolparen (string, string+*sindex, sindex, xflags)); -+ #endif - } - #endif /* PROCESS_SUBSTITUTION */ -*************** -*** 1786,1790 **** - if (string[si] =3D=3D '\0') - CQ_RETURN(si); -! temp =3D extract_process_subst (string, (c =3D=3D '<') ? "<(" : ">(", &= si); - free (temp); /* no SX_ALLOC here */ - i =3D si; ---- 1792,1796 ---- - if (string[si] =3D=3D '\0') - CQ_RETURN(si); -! temp =3D extract_process_subst (string, (c =3D=3D '<') ? "<(" : ">(", &= si, 0); - free (temp); /* no SX_ALLOC here */ - i =3D si; -*************** -*** 8250,8254 **** - t_index =3D sindex + 1; /* skip past both '<' and LPAREN */ - =20 -! temp1 =3D extract_process_subst (string, (c =3D=3D '<') ? "<(" : ">("= , &t_index); /*))*/ - sindex =3D t_index; - =20 ---- 8256,8260 ---- - t_index =3D sindex + 1; /* skip past both '<' and LPAREN */ - =20 -! temp1 =3D extract_process_subst (string, (c =3D=3D '<') ? "<(" : ">("= , &t_index, 0); /*))*/ - sindex =3D t_index; - =20 -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 22 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 23 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-024 b/src/patches/bash/bash43-024 deleted file mode 100644 index a24b8fbbc..000000000 --- a/src/patches/bash/bash43-024 +++ /dev/null @@ -1,54 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-024 - -Bug-Reported-by: Corentin Peuvrel -Bug-Reference-ID: <53CE9E5D.6050203(a)pom-monitoring.com> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-07/msg000= 21.html - -Bug-Description: - -Indirect variable references do not work correctly if the reference -variable expands to an array reference using a subscript other than 0 -(e.g., foo=3D'bar[1]' ; echo ${!foo}). - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/subst.c 2014-06-03 09:32:44.000000000 -0400 ---- subst.c 2014-07-23 09:58:19.000000000 -0400 -*************** -*** 7375,7379 **** - =20 - if (want_indir) -! tdesc =3D parameter_brace_expand_indir (name + 1, var_is_special, quot= ed, quoted_dollar_atp, contains_dollar_at); - else - tdesc =3D parameter_brace_expand_word (name, var_is_special, quoted, P= F_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind); ---- 7445,7455 ---- - =20 - if (want_indir) -! { -! tdesc =3D parameter_brace_expand_indir (name + 1, var_is_special, qu= oted, quoted_dollar_atp, contains_dollar_at); -! /* Turn off the W_ARRAYIND flag because there is no way for this fun= ction -! to return the index we're supposed to be using. */ -! if (tdesc && tdesc->flags) -! tdesc->flags &=3D ~W_ARRAYIND; -! } - else - tdesc =3D parameter_brace_expand_word (name, var_is_special, quoted, P= F_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 23 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 24 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-025 b/src/patches/bash/bash43-025 deleted file mode 100644 index 721aca030..000000000 --- a/src/patches/bash/bash43-025 +++ /dev/null @@ -1,123 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-025 - -Bug-Reported-by: Stephane Chazelas -Bug-Reference-ID: -Bug-Reference-URL: - -Bug-Description: - -Under certain circumstances, bash will execute user code while processing the -environment for exported function definitions. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/builtins/common.h 2013-07-08 16:54:47.000000000 -0400 ---- builtins/common.h 2014-09-12 14:25:47.000000000 -0400 -*************** -*** 34,37 **** ---- 49,54 ---- - #define SEVAL_PARSEONLY 0x020 - #define SEVAL_NOLONGJMP 0x040 -+ #define SEVAL_FUNCDEF 0x080 /* only allow function definitions */ -+ #define SEVAL_ONECMD 0x100 /* only allow a single command */ - =20 - /* Flags for describe_command, shared between type.def and command.def */ -*** ../bash-4.3-patched/builtins/evalstring.c 2014-02-11 09:42:10.000000000 = -0500 ---- builtins/evalstring.c 2014-09-14 14:15:13.000000000 -0400 -*************** -*** 309,312 **** ---- 313,324 ---- - struct fd_bitmap *bitmap; - =20 -+ if ((flags & SEVAL_FUNCDEF) && command->type !=3D cm_function_def) -+ { -+ internal_warning ("%s: ignoring function definition attempt", from_fil= e); -+ should_jump_to_top_level =3D 0; -+ last_result =3D last_command_exit_value =3D EX_BADUSAGE; -+ break; -+ } -+=20 - bitmap =3D new_fd_bitmap (FD_BITMAP_SIZE); - begin_unwind_frame ("pe_dispose"); -*************** -*** 369,372 **** ---- 381,387 ---- - dispose_fd_bitmap (bitmap); - discard_unwind_frame ("pe_dispose"); -+=20 -+ if (flags & SEVAL_ONECMD) -+ break; - } - } -*** ../bash-4.3-patched/variables.c 2014-05-15 08:26:50.000000000 -0400 ---- variables.c 2014-09-14 14:23:35.000000000 -0400 -*************** -*** 359,369 **** - strcpy (temp_string + char_index + 1, string); - =20 -! if (posixly_correct =3D=3D 0 || legal_identifier (name)) -! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST); -!=20 -! /* Ancient backwards compatibility. Old versions of bash exported -! functions like name()=3D() {...} */ -! if (name[char_index - 1] =3D=3D ')' && name[char_index - 2] =3D=3D '(') -! name[char_index - 2] =3D '\0'; - =20 - if (temp_var =3D find_function (name)) ---- 364,372 ---- - strcpy (temp_string + char_index + 1, string); - =20 -! /* Don't import function names that are invalid identifiers from the -! environment, though we still allow them to be defined as shell -! variables. */ -! if (legal_identifier (name)) -! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL= _FUNCDEF|SEVAL_ONECMD); - =20 - if (temp_var =3D find_function (name)) -*************** -*** 382,389 **** - report_error (_("error importing function definition for `%s'"), na= me); - } --=20 -- /* ( */ -- if (name[char_index - 1] =3D=3D ')' && name[char_index - 2] =3D=3D '\0') -- name[char_index - 2] =3D '('; /* ) */ - } - #if defined (ARRAY_VARS) ---- 385,388 ---- -*** ../bash-4.3-patched/subst.c 2014-08-11 11:16:35.000000000 -0400 ---- subst.c 2014-09-12 15:31:04.000000000 -0400 -*************** -*** 8048,8052 **** - goto return0; - } -! else if (var =3D find_variable_last_nameref (temp1)) - { - temp =3D nameref_cell (var); ---- 8118,8124 ---- - goto return0; - } -! else if (var && (invisible_p (var) || var_isset (var) =3D=3D 0)) -! temp =3D (char *)NULL; -! else if ((var =3D find_variable_last_nameref (temp1)) && var_isset (= var) && invisible_p (var) =3D=3D 0) - { - temp =3D nameref_cell (var); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 24 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 25 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-026 b/src/patches/bash/bash43-026 deleted file mode 100644 index e48141b01..000000000 --- a/src/patches/bash/bash43-026 +++ /dev/null @@ -1,60 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-026 - -Bug-Reported-by: Tavis Ormandy -Bug-Reference-ID: -Bug-Reference-URL: http://twitter.com/taviso/statuses/514887394294652929 - -Bug-Description: - -Under certain circumstances, bash can incorrectly save a lookahead character= and -return it on a subsequent call, even when reading a new line. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3.25/parse.y 2014-07-30 10:14:31.000000000 -0400 ---- parse.y 2014-09-25 20:20:21.000000000 -0400 -*************** -*** 2954,2957 **** ---- 2954,2959 ---- - word_desc_to_read =3D (WORD_DESC *)NULL; - =20 -+ eol_ungetc_lookahead =3D 0; -+=20 - current_token =3D '\n'; /* XXX */ - last_read_token =3D '\n'; -*** ../bash-4.3.25/y.tab.c 2014-07-30 10:14:32.000000000 -0400 ---- y.tab.c 2014-09-25 20:21:48.000000000 -0400 -*************** -*** 5266,5269 **** ---- 5266,5271 ---- - word_desc_to_read =3D (WORD_DESC *)NULL; - =20 -+ eol_ungetc_lookahead =3D 0; -+=20 - current_token =3D '\n'; /* XXX */ - last_read_token =3D '\n'; -*************** -*** 8540,8542 **** - } - #endif /* HANDLE_MULTIBYTE */ --=20 ---- 8542,8543 ---- -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 25 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 26 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-027 b/src/patches/bash/bash43-027 deleted file mode 100644 index ef48bd82d..000000000 --- a/src/patches/bash/bash43-027 +++ /dev/null @@ -1,221 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-027 - -Bug-Reported-by: Florian Weimer -Bug-Reference-ID: -Bug-Reference-URL: - -Bug-Description: - -This patch changes the encoding bash uses for exported functions to avoid -clashes with shell variables and to avoid depending only on an environment -variable's contents to determine whether or not to interpret it as a shell -function. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3.26/variables.c 2014-09-25 23:02:18.000000000 -0400 ---- variables.c 2014-09-27 20:52:04.000000000 -0400 -*************** -*** 84,87 **** ---- 84,92 ---- - #define ifsname(s) ((s)[0] =3D=3D 'I' && (s)[1] =3D=3D 'F' && (s)[2] =3D= =3D 'S' && (s)[3] =3D=3D '\0') - =20 -+ #define BASHFUNC_PREFIX "BASH_FUNC_" -+ #define BASHFUNC_PREFLEN 10 /* =3D=3D strlen(BASHFUNC_PREFIX */ -+ #define BASHFUNC_SUFFIX "%%" -+ #define BASHFUNC_SUFFLEN 2 /* =3D=3D strlen(BASHFUNC_SUFFIX) */ -+=20 - extern char **environ; - =20 -*************** -*** 280,284 **** - static void dispose_temporary_env __P((sh_free_func_t *)); =20 - =20 -! static inline char *mk_env_string __P((const char *, const char *)); - static char **make_env_array_from_var_list __P((SHELL_VAR **)); - static char **make_var_export_array __P((VAR_CONTEXT *)); ---- 285,289 ---- - static void dispose_temporary_env __P((sh_free_func_t *)); =20 - =20 -! static inline char *mk_env_string __P((const char *, const char *, int)); - static char **make_env_array_from_var_list __P((SHELL_VAR **)); - static char **make_var_export_array __P((VAR_CONTEXT *)); -*************** -*** 350,369 **** - /* If exported function, define it now. Don't import functions from - the environment in privileged mode. */ -! if (privmode =3D=3D 0 && read_but_dont_execute =3D=3D 0 && STREQN ("= () {", string, 4)) - { - string_length =3D strlen (string); -! temp_string =3D (char *)xmalloc (3 + string_length + char_index); - =20 -! strcpy (temp_string, name); -! temp_string[char_index] =3D ' '; -! strcpy (temp_string + char_index + 1, string); - =20 - /* Don't import function names that are invalid identifiers from the - environment, though we still allow them to be defined as shell - variables. */ -! if (legal_identifier (name)) -! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL= _FUNCDEF|SEVAL_ONECMD); - =20 -! if (temp_var =3D find_function (name)) - { - VSETATTR (temp_var, (att_exported|att_imported)); ---- 355,385 ---- - /* If exported function, define it now. Don't import functions from - the environment in privileged mode. */ -! if (privmode =3D=3D 0 && read_but_dont_execute =3D=3D 0 &&=20 -! STREQN (BASHFUNC_PREFIX, name, BASHFUNC_PREFLEN) && -! STREQ (BASHFUNC_SUFFIX, name + char_index - BASHFUNC_SUFFLEN) && -! STREQN ("() {", string, 4)) - { -+ size_t namelen; -+ char *tname; /* desired imported function name */ -+=20 -+ namelen =3D char_index - BASHFUNC_PREFLEN - BASHFUNC_SUFFLEN; -+=20 -+ tname =3D name + BASHFUNC_PREFLEN; /* start of func name */ -+ tname[namelen] =3D '\0'; /* now tname =3D=3D func name */ -+=20 - string_length =3D strlen (string); -! temp_string =3D (char *)xmalloc (namelen + string_length + 2); - =20 -! memcpy (temp_string, tname, namelen); -! temp_string[namelen] =3D ' '; -! memcpy (temp_string + namelen + 1, string, string_length + 1); - =20 - /* Don't import function names that are invalid identifiers from the - environment, though we still allow them to be defined as shell - variables. */ -! if (absolute_program (tname) =3D=3D 0 && (posixly_correct =3D=3D 0 || l= egal_identifier (tname))) -! parse_and_execute (temp_string, tname, SEVAL_NONINT|SEVAL_NOHIST|SEVA= L_FUNCDEF|SEVAL_ONECMD); - =20 -! if (temp_var =3D find_function (tname)) - { - VSETATTR (temp_var, (att_exported|att_imported)); -*************** -*** 378,383 **** - } - last_command_exit_value =3D 1; -! report_error (_("error importing function definition for `%s'"), na= me); - } - } - #if defined (ARRAY_VARS) ---- 394,402 ---- - } - last_command_exit_value =3D 1; -! report_error (_("error importing function definition for `%s'"), tn= ame); - } -+=20 -+ /* Restore original suffix */ -+ tname[namelen] =3D BASHFUNC_SUFFIX[0]; - } - #if defined (ARRAY_VARS) -*************** -*** 2955,2959 **** - =20 - INVALIDATE_EXPORTSTR (var); -! var->exportstr =3D mk_env_string (name, value); - =20 - array_needs_making =3D 1; ---- 2974,2978 ---- - =20 - INVALIDATE_EXPORTSTR (var); -! var->exportstr =3D mk_env_string (name, value, 0); - =20 - array_needs_making =3D 1; -*************** -*** 3853,3871 **** - =20 - static inline char * -! mk_env_string (name, value) - const char *name, *value; - { -! int name_len, value_len; -! char *p; - =20 - name_len =3D strlen (name); - value_len =3D STRLEN (value); -! p =3D (char *)xmalloc (2 + name_len + value_len); -! strcpy (p, name); -! p[name_len] =3D '=3D'; - if (value && *value) -! strcpy (p + name_len + 1, value); - else -! p[name_len + 1] =3D '\0'; - return (p); - } ---- 3872,3911 ---- - =20 - static inline char * -! mk_env_string (name, value, isfunc) - const char *name, *value; -+ int isfunc; - { -! size_t name_len, value_len; -! char *p, *q; - =20 - name_len =3D strlen (name); - value_len =3D STRLEN (value); -!=20 -! /* If we are exporting a shell function, construct the encoded function -! name. */ -! if (isfunc && value) -! { -! p =3D (char *)xmalloc (BASHFUNC_PREFLEN + name_len + BASHFUNC_SUFFLE= N + value_len + 2); -! q =3D p; -! memcpy (q, BASHFUNC_PREFIX, BASHFUNC_PREFLEN); -! q +=3D BASHFUNC_PREFLEN; -! memcpy (q, name, name_len); -! q +=3D name_len; -! memcpy (q, BASHFUNC_SUFFIX, BASHFUNC_SUFFLEN); -! q +=3D BASHFUNC_SUFFLEN; -! } -! else -! { -! p =3D (char *)xmalloc (2 + name_len + value_len); -! memcpy (p, name, name_len); -! q =3D p + name_len; -! } -!=20 -! q[0] =3D '=3D'; - if (value && *value) -! memcpy (q + 1, value, value_len + 1); - else -! q[1] =3D '\0'; -!=20 - return (p); - } -*************** -*** 3953,3957 **** - using the cached exportstr... */ - list[list_index] =3D USE_EXPORTSTR ? savestring (value) -! : mk_env_string (var->name, value); - =20 - if (USE_EXPORTSTR =3D=3D 0) ---- 3993,3997 ---- - using the cached exportstr... */ - list[list_index] =3D USE_EXPORTSTR ? savestring (value) -! : mk_env_string (var->name, value, function_p (var)); - =20 - if (USE_EXPORTSTR =3D=3D 0) -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 26 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 27 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-028 b/src/patches/bash/bash43-028 deleted file mode 100644 index 7448cf814..000000000 --- a/src/patches/bash/bash43-028 +++ /dev/null @@ -1,2265 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-028 - -Bug-Reported-by: Florian Weimer -Bug-Reference-ID: -Bug-Reference-URL: - -Bug-Description: - -There are two local buffer overflows in parse.y that can cause the shell -to dump core when given many here-documents attached to a single command -or many nested loops. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/parse.y 2014-09-25 23:02:35.000000000 -0400 ---- parse.y 2014-09-29 16:47:03.000000000 -0400 -*************** -*** 169,172 **** ---- 169,175 ---- - static int reserved_word_acceptable __P((int)); - static int yylex __P((void)); -+=20 -+ static void push_heredoc __P((REDIRECT *)); -+ static char *mk_alexpansion __P((char *)); - static int alias_expand_token __P((char *)); - static int time_command_acceptable __P((void)); -*************** -*** 266,270 **** - /* Variables to manage the task of reading here documents, because we need= to - defer the reading until after a complete command has been collected. */ -! static REDIRECT *redir_stack[10]; - int need_here_doc; - =20 ---- 269,275 ---- - /* Variables to manage the task of reading here documents, because we need= to - defer the reading until after a complete command has been collected. */ -! #define HEREDOC_MAX 16 -!=20 -! static REDIRECT *redir_stack[HEREDOC_MAX]; - int need_here_doc; - =20 -*************** -*** 308,312 **** - index is decremented after a case, select, or for command is parsed. */ - #define MAX_CASE_NEST 128 -! static int word_lineno[MAX_CASE_NEST]; - static int word_top =3D -1; - =20 ---- 313,317 ---- - index is decremented after a case, select, or for command is parsed. */ - #define MAX_CASE_NEST 128 -! static int word_lineno[MAX_CASE_NEST+1]; - static int word_top =3D -1; - =20 -*************** -*** 521,525 **** - redir.filename =3D $2; - $$ =3D make_redirection (source, r_reading_until, redir, 0); -! redir_stack[need_here_doc++] =3D $$; - } - | NUMBER LESS_LESS WORD ---- 526,530 ---- - redir.filename =3D $2; - $$ =3D make_redirection (source, r_reading_until, redir, 0); -! push_heredoc ($$); - } - | NUMBER LESS_LESS WORD -*************** -*** 528,532 **** - redir.filename =3D $3; - $$ =3D make_redirection (source, r_reading_until, redir, 0); -! redir_stack[need_here_doc++] =3D $$; - } - | REDIR_WORD LESS_LESS WORD ---- 533,537 ---- - redir.filename =3D $3; - $$ =3D make_redirection (source, r_reading_until, redir, 0); -! push_heredoc ($$); - } - | REDIR_WORD LESS_LESS WORD -*************** -*** 535,539 **** - redir.filename =3D $3; - $$ =3D make_redirection (source, r_reading_until, redir, REDIR_VARASS= IGN); -! redir_stack[need_here_doc++] =3D $$; - } - | LESS_LESS_MINUS WORD ---- 540,544 ---- - redir.filename =3D $3; - $$ =3D make_redirection (source, r_reading_until, redir, REDIR_VARASS= IGN); -! push_heredoc ($$); - } - | LESS_LESS_MINUS WORD -*************** -*** 542,546 **** - redir.filename =3D $2; - $$ =3D make_redirection (source, r_deblank_reading_until, redir, 0); -! redir_stack[need_here_doc++] =3D $$; - } - | NUMBER LESS_LESS_MINUS WORD ---- 547,551 ---- - redir.filename =3D $2; - $$ =3D make_redirection (source, r_deblank_reading_until, redir, 0); -! push_heredoc ($$); - } - | NUMBER LESS_LESS_MINUS WORD -*************** -*** 549,553 **** - redir.filename =3D $3; - $$ =3D make_redirection (source, r_deblank_reading_until, redir, 0); -! redir_stack[need_here_doc++] =3D $$; - } - | REDIR_WORD LESS_LESS_MINUS WORD ---- 554,558 ---- - redir.filename =3D $3; - $$ =3D make_redirection (source, r_deblank_reading_until, redir, 0); -! push_heredoc ($$); - } - | REDIR_WORD LESS_LESS_MINUS WORD -*************** -*** 556,560 **** - redir.filename =3D $3; - $$ =3D make_redirection (source, r_deblank_reading_until, redir, REDI= R_VARASSIGN); -! redir_stack[need_here_doc++] =3D $$; - } - | LESS_LESS_LESS WORD ---- 561,565 ---- - redir.filename =3D $3; - $$ =3D make_redirection (source, r_deblank_reading_until, redir, REDI= R_VARASSIGN); -! push_heredoc ($$); - } - | LESS_LESS_LESS WORD -*************** -*** 2637,2640 **** ---- 2642,2660 ---- - static int esacs_needed_count; - =20 -+ static void -+ push_heredoc (r) -+ REDIRECT *r; -+ { -+ if (need_here_doc >=3D HEREDOC_MAX) -+ { -+ last_command_exit_value =3D EX_BADUSAGE; -+ need_here_doc =3D 0; -+ report_syntax_error (_("maximum here-document count exceeded")); -+ reset_parser (); -+ exit_shell (last_command_exit_value); -+ } -+ redir_stack[need_here_doc++] =3D r; -+ } -+=20 - void - gather_here_documents () -*** ../bash-4.3.27/y.tab.c 2014-10-01 11:38:24.000000000 -0400 ---- y.tab.c 2014-10-01 12:46:11.000000000 -0400 -*************** -*** 169,173 **** - =20 - /* Copy the first part of user declarations. */ -! #line 21 "/usr/homes/chet/src/bash/src/parse.y" - =20 - #include "config.h" ---- 169,173 ---- - =20 - /* Copy the first part of user declarations. */ -! #line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - =20 - #include "config.h" -*************** -*** 320,323 **** ---- 320,326 ---- - static int reserved_word_acceptable __P((int)); - static int yylex __P((void)); -+=20 -+ static void push_heredoc __P((REDIRECT *)); -+ static char *mk_alexpansion __P((char *)); - static int alias_expand_token __P((char *)); - static int time_command_acceptable __P((void)); -*************** -*** 417,421 **** - /* Variables to manage the task of reading here documents, because we need= to - defer the reading until after a complete command has been collected. */ -! static REDIRECT *redir_stack[10]; - int need_here_doc; - =20 ---- 420,426 ---- - /* Variables to manage the task of reading here documents, because we need= to - defer the reading until after a complete command has been collected. */ -! #define HEREDOC_MAX 16 -!=20 -! static REDIRECT *redir_stack[HEREDOC_MAX]; - int need_here_doc; - =20 -*************** -*** 459,463 **** - index is decremented after a case, select, or for command is parsed. */ - #define MAX_CASE_NEST 128 -! static int word_lineno[MAX_CASE_NEST]; - static int word_top =3D -1; - =20 ---- 464,468 ---- - index is decremented after a case, select, or for command is parsed. */ - #define MAX_CASE_NEST 128 -! static int word_lineno[MAX_CASE_NEST+1]; - static int word_top =3D -1; - =20 -*************** -*** 493,497 **** - #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - typedef union YYSTYPE -! #line 324 "/usr/homes/chet/src/bash/src/parse.y" - { - WORD_DESC *word; /* the word that we read. */ ---- 498,502 ---- - #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - typedef union YYSTYPE -! #line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - WORD_DESC *word; /* the word that we read. */ -*************** -*** 504,508 **** - } - /* Line 193 of yacc.c. */ -! #line 507 "y.tab.c" - YYSTYPE; - # define yystype YYSTYPE /* obsolescent; will be withdrawn */ ---- 509,513 ---- - } - /* Line 193 of yacc.c. */ -! #line 512 "y.tab.c" - YYSTYPE; - # define yystype YYSTYPE /* obsolescent; will be withdrawn */ -*************** -*** 517,521 **** - =20 - /* Line 216 of yacc.c. */ -! #line 520 "y.tab.c" - =20 - #ifdef short ---- 522,526 ---- - =20 - /* Line 216 of yacc.c. */ -! #line 525 "y.tab.c" - =20 - #ifdef short -*************** -*** 887,907 **** - static const yytype_uint16 yyrline[] =3D - { -! 0, 377, 377, 388, 397, 412, 422, 424, 428, 434, -! 440, 446, 452, 458, 464, 470, 476, 482, 488, 494, -! 500, 506, 512, 518, 525, 532, 539, 546, 553, 560, -! 566, 572, 578, 584, 590, 596, 602, 608, 614, 620, -! 626, 632, 638, 644, 650, 656, 662, 668, 674, 680, -! 686, 692, 700, 702, 704, 708, 712, 723, 725, 729, -! 731, 733, 749, 751, 755, 757, 759, 761, 763, 765, -! 767, 769, 771, 773, 775, 779, 784, 789, 794, 799, -! 804, 809, 814, 821, 826, 831, 836, 843, 848, 853, -! 858, 863, 868, 875, 880, 885, 892, 895, 898, 902, -! 904, 935, 942, 947, 964, 969, 986, 993, 995, 997, -! 1002, 1006, 1010, 1014, 1016, 1018, 1022, 1023, 1027, 1029, -! 1031, 1033, 1037, 1039, 1041, 1043, 1045, 1047, 1051, 1053, -! 1062, 1070, 1071, 1077, 1078, 1085, 1089, 1091, 1093, 1100, -! 1102, 1104, 1108, 1109, 1112, 1114, 1116, 1120, 1121, 1130, -! 1143, 1159, 1174, 1176, 1178, 1185, 1188, 1192, 1194, 1200, -! 1206, 1223, 1243, 1245, 1268, 1272, 1274, 1276 - }; - #endif ---- 892,912 ---- - static const yytype_uint16 yyrline[] =3D - { -! 0, 382, 382, 393, 402, 417, 427, 429, 433, 439, -! 445, 451, 457, 463, 469, 475, 481, 487, 493, 499, -! 505, 511, 517, 523, 530, 537, 544, 551, 558, 565, -! 571, 577, 583, 589, 595, 601, 607, 613, 619, 625, -! 631, 637, 643, 649, 655, 661, 667, 673, 679, 685, -! 691, 697, 705, 707, 709, 713, 717, 728, 730, 734, -! 736, 738, 754, 756, 760, 762, 764, 766, 768, 770, -! 772, 774, 776, 778, 780, 784, 789, 794, 799, 804, -! 809, 814, 819, 826, 831, 836, 841, 848, 853, 858, -! 863, 868, 873, 880, 885, 890, 897, 900, 903, 907, -! 909, 940, 947, 952, 969, 974, 991, 998, 1000, 1002, -! 1007, 1011, 1015, 1019, 1021, 1023, 1027, 1028, 1032, 1034, -! 1036, 1038, 1042, 1044, 1046, 1048, 1050, 1052, 1056, 1058, -! 1067, 1075, 1076, 1082, 1083, 1090, 1094, 1096, 1098, 1105, -! 1107, 1109, 1113, 1114, 1117, 1119, 1121, 1125, 1126, 1135, -! 1148, 1164, 1179, 1181, 1183, 1190, 1193, 1197, 1199, 1205, -! 1211, 1228, 1248, 1250, 1273, 1277, 1279, 1281 - }; - #endif -*************** -*** 2094,2098 **** - { - case 2: -! #line 378 "/usr/homes/chet/src/bash/src/parse.y" - { - /* Case of regular command. Discard the error ---- 2099,2103 ---- - { - case 2: -! #line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - /* Case of regular command. Discard the error -*************** -*** 2108,2112 **** - =20 - case 3: -! #line 389 "/usr/homes/chet/src/bash/src/parse.y" - { - /* Case of regular command, but not a very ---- 2113,2117 ---- - =20 - case 3: -! #line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - /* Case of regular command, but not a very -*************** -*** 2120,2124 **** - =20 - case 4: -! #line 398 "/usr/homes/chet/src/bash/src/parse.y" - { - /* Error during parsing. Return NULL command. */ ---- 2125,2129 ---- - =20 - case 4: -! #line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - /* Error during parsing. Return NULL command. */ -*************** -*** 2138,2142 **** - =20 - case 5: -! #line 413 "/usr/homes/chet/src/bash/src/parse.y" - { - /* Case of EOF seen by itself. Do ignoreeof or ---- 2143,2147 ---- - =20 - case 5: -! #line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - /* Case of EOF seen by itself. Do ignoreeof or -*************** -*** 2149,2163 **** - =20 - case 6: -! #line 423 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.word_list) =3D make_word_list ((yyvsp[(1) - (1)].word), (WORD= _LIST *)NULL); } - break; - =20 - case 7: -! #line 425 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.word_list) =3D make_word_list ((yyvsp[(2) - (2)].word), (yyvs= p[(1) - (2)].word_list)); } - break; - =20 - case 8: -! #line 429 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D 1; ---- 2154,2168 ---- - =20 - case 6: -! #line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.word_list) =3D make_word_list ((yyvsp[(1) - (1)].word), (WORD= _LIST *)NULL); } - break; - =20 - case 7: -! #line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.word_list) =3D make_word_list ((yyvsp[(2) - (2)].word), (yyvs= p[(1) - (2)].word_list)); } - break; - =20 - case 8: -! #line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 1; -*************** -*** 2168,2172 **** - =20 - case 9: -! #line 435 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D 0; ---- 2173,2177 ---- - =20 - case 9: -! #line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 0; -*************** -*** 2177,2181 **** - =20 - case 10: -! #line 441 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2182,2186 ---- - =20 - case 10: -! #line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2186,2190 **** - =20 - case 11: -! #line 447 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2191,2195 ---- - =20 - case 11: -! #line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2195,2199 **** - =20 - case 12: -! #line 453 "/usr/homes/chet/src/bash/src/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2200,2204 ---- - =20 - case 12: -! #line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2204,2208 **** - =20 - case 13: -! #line 459 "/usr/homes/chet/src/bash/src/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2209,2213 ---- - =20 - case 13: -! #line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2213,2217 **** - =20 - case 14: -! #line 465 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D 1; ---- 2218,2222 ---- - =20 - case 14: -! #line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 1; -*************** -*** 2222,2226 **** - =20 - case 15: -! #line 471 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2227,2231 ---- - =20 - case 15: -! #line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2231,2235 **** - =20 - case 16: -! #line 477 "/usr/homes/chet/src/bash/src/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2236,2240 ---- - =20 - case 16: -! #line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2240,2244 **** - =20 - case 17: -! #line 483 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D 1; ---- 2245,2249 ---- - =20 - case 17: -! #line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 1; -*************** -*** 2249,2253 **** - =20 - case 18: -! #line 489 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2254,2258 ---- - =20 - case 18: -! #line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2258,2262 **** - =20 - case 19: -! #line 495 "/usr/homes/chet/src/bash/src/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2263,2267 ---- - =20 - case 19: -! #line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2267,2271 **** - =20 - case 20: -! #line 501 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D 0; ---- 2272,2276 ---- - =20 - case 20: -! #line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 0; -*************** -*** 2276,2280 **** - =20 - case 21: -! #line 507 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2281,2285 ---- - =20 - case 21: -! #line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2285,2289 **** - =20 - case 22: -! #line 513 "/usr/homes/chet/src/bash/src/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2290,2294 ---- - =20 - case 22: -! #line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2294,2358 **** - =20 - case 23: -! #line 519 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D 0; - redir.filename =3D (yyvsp[(2) - (2)].word); - (yyval.redirect) =3D make_redirection (source, r_reading_until, redir= , 0); -! redir_stack[need_here_doc++] =3D (yyval.redirect); - } - break; - =20 - case 24: -! #line 526 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); - redir.filename =3D (yyvsp[(3) - (3)].word); - (yyval.redirect) =3D make_redirection (source, r_reading_until, redir= , 0); -! redir_stack[need_here_doc++] =3D (yyval.redirect); - } - break; - =20 - case 25: -! #line 533 "/usr/homes/chet/src/bash/src/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); - redir.filename =3D (yyvsp[(3) - (3)].word); - (yyval.redirect) =3D make_redirection (source, r_reading_until, redir= , REDIR_VARASSIGN); -! redir_stack[need_here_doc++] =3D (yyval.redirect); - } - break; - =20 - case 26: -! #line 540 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D 0; - redir.filename =3D (yyvsp[(2) - (2)].word); - (yyval.redirect) =3D make_redirection (source, r_deblank_reading_unti= l, redir, 0); -! redir_stack[need_here_doc++] =3D (yyval.redirect); - } - break; - =20 - case 27: -! #line 547 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); - redir.filename =3D (yyvsp[(3) - (3)].word); - (yyval.redirect) =3D make_redirection (source, r_deblank_reading_unti= l, redir, 0); -! redir_stack[need_here_doc++] =3D (yyval.redirect); - } - break; - =20 - case 28: -! #line 554 "/usr/homes/chet/src/bash/src/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); - redir.filename =3D (yyvsp[(3) - (3)].word); - (yyval.redirect) =3D make_redirection (source, r_deblank_reading_unti= l, redir, REDIR_VARASSIGN); -! redir_stack[need_here_doc++] =3D (yyval.redirect); - } - break; - =20 - case 29: -! #line 561 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D 0; ---- 2299,2363 ---- - =20 - case 23: -! #line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 0; - redir.filename =3D (yyvsp[(2) - (2)].word); - (yyval.redirect) =3D make_redirection (source, r_reading_until, redir= , 0); -! push_heredoc ((yyval.redirect)); - } - break; - =20 - case 24: -! #line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); - redir.filename =3D (yyvsp[(3) - (3)].word); - (yyval.redirect) =3D make_redirection (source, r_reading_until, redir= , 0); -! push_heredoc ((yyval.redirect)); - } - break; - =20 - case 25: -! #line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); - redir.filename =3D (yyvsp[(3) - (3)].word); - (yyval.redirect) =3D make_redirection (source, r_reading_until, redir= , REDIR_VARASSIGN); -! push_heredoc ((yyval.redirect)); - } - break; - =20 - case 26: -! #line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 0; - redir.filename =3D (yyvsp[(2) - (2)].word); - (yyval.redirect) =3D make_redirection (source, r_deblank_reading_unti= l, redir, 0); -! push_heredoc ((yyval.redirect)); - } - break; - =20 - case 27: -! #line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); - redir.filename =3D (yyvsp[(3) - (3)].word); - (yyval.redirect) =3D make_redirection (source, r_deblank_reading_unti= l, redir, 0); -! push_heredoc ((yyval.redirect)); - } - break; - =20 - case 28: -! #line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); - redir.filename =3D (yyvsp[(3) - (3)].word); - (yyval.redirect) =3D make_redirection (source, r_deblank_reading_unti= l, redir, REDIR_VARASSIGN); -! push_heredoc ((yyval.redirect)); - } - break; - =20 - case 29: -! #line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 0; -*************** -*** 2363,2367 **** - =20 - case 30: -! #line 567 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2368,2372 ---- - =20 - case 30: -! #line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2372,2376 **** - =20 - case 31: -! #line 573 "/usr/homes/chet/src/bash/src/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2377,2381 ---- - =20 - case 31: -! #line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2381,2385 **** - =20 - case 32: -! #line 579 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D 0; ---- 2386,2390 ---- - =20 - case 32: -! #line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 0; -*************** -*** 2390,2394 **** - =20 - case 33: -! #line 585 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2395,2399 ---- - =20 - case 33: -! #line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2399,2403 **** - =20 - case 34: -! #line 591 "/usr/homes/chet/src/bash/src/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2404,2408 ---- - =20 - case 34: -! #line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2408,2412 **** - =20 - case 35: -! #line 597 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D 1; ---- 2413,2417 ---- - =20 - case 35: -! #line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 1; -*************** -*** 2417,2421 **** - =20 - case 36: -! #line 603 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2422,2426 ---- - =20 - case 36: -! #line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2426,2430 **** - =20 - case 37: -! #line 609 "/usr/homes/chet/src/bash/src/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2431,2435 ---- - =20 - case 37: -! #line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2435,2439 **** - =20 - case 38: -! #line 615 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D 0; ---- 2440,2444 ---- - =20 - case 38: -! #line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 0; -*************** -*** 2444,2448 **** - =20 - case 39: -! #line 621 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2449,2453 ---- - =20 - case 39: -! #line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2453,2457 **** - =20 - case 40: -! #line 627 "/usr/homes/chet/src/bash/src/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2458,2462 ---- - =20 - case 40: -! #line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2462,2466 **** - =20 - case 41: -! #line 633 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D 1; ---- 2467,2471 ---- - =20 - case 41: -! #line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 1; -*************** -*** 2471,2475 **** - =20 - case 42: -! #line 639 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2476,2480 ---- - =20 - case 42: -! #line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2480,2484 **** - =20 - case 43: -! #line 645 "/usr/homes/chet/src/bash/src/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2485,2489 ---- - =20 - case 43: -! #line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2489,2493 **** - =20 - case 44: -! #line 651 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D 1; ---- 2494,2498 ---- - =20 - case 44: -! #line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 1; -*************** -*** 2498,2502 **** - =20 - case 45: -! #line 657 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2503,2507 ---- - =20 - case 45: -! #line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2507,2511 **** - =20 - case 46: -! #line 663 "/usr/homes/chet/src/bash/src/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2512,2516 ---- - =20 - case 46: -! #line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2516,2520 **** - =20 - case 47: -! #line 669 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D 0; ---- 2521,2525 ---- - =20 - case 47: -! #line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 0; -*************** -*** 2525,2529 **** - =20 - case 48: -! #line 675 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2530,2534 ---- - =20 - case 48: -! #line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2534,2538 **** - =20 - case 49: -! #line 681 "/usr/homes/chet/src/bash/src/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2539,2543 ---- - =20 - case 49: -! #line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2543,2547 **** - =20 - case 50: -! #line 687 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D 1; ---- 2548,2552 ---- - =20 - case 50: -! #line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 1; -*************** -*** 2552,2556 **** - =20 - case 51: -! #line 693 "/usr/homes/chet/src/bash/src/parse.y" - { - source.dest =3D 1; ---- 2557,2561 ---- - =20 - case 51: -! #line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 1; -*************** -*** 2561,2580 **** - =20 - case 52: -! #line 701 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.element).word =3D (yyvsp[(1) - (1)].word); (yyval.element).re= direct =3D 0; } - break; - =20 - case 53: -! #line 703 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.element).word =3D (yyvsp[(1) - (1)].word); (yyval.element).re= direct =3D 0; } - break; - =20 - case 54: -! #line 705 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.element).redirect =3D (yyvsp[(1) - (1)].redirect); (yyval.ele= ment).word =3D 0; } - break; - =20 - case 55: -! #line 709 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.redirect) =3D (yyvsp[(1) - (1)].redirect); ---- 2566,2585 ---- - =20 - case 52: -! #line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.element).word =3D (yyvsp[(1) - (1)].word); (yyval.element).re= direct =3D 0; } - break; - =20 - case 53: -! #line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.element).word =3D (yyvsp[(1) - (1)].word); (yyval.element).re= direct =3D 0; } - break; - =20 - case 54: -! #line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.element).redirect =3D (yyvsp[(1) - (1)].redirect); (yyval.ele= ment).word =3D 0; } - break; - =20 - case 55: -! #line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.redirect) =3D (yyvsp[(1) - (1)].redirect); -*************** -*** 2583,2587 **** - =20 - case 56: -! #line 713 "/usr/homes/chet/src/bash/src/parse.y" - { - register REDIRECT *t; ---- 2588,2592 ---- - =20 - case 56: -! #line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - register REDIRECT *t; -*************** -*** 2595,2619 **** - =20 - case 57: -! #line 724 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D make_simple_command ((yyvsp[(1) - (1)].element),= (COMMAND *)NULL); } - break; - =20 - case 58: -! #line 726 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D make_simple_command ((yyvsp[(2) - (2)].element),= (yyvsp[(1) - (2)].command)); } - break; - =20 - case 59: -! #line 730 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D clean_simple_command ((yyvsp[(1) - (1)].command)= ); } - break; - =20 - case 60: -! #line 732 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 61: -! #line 734 "/usr/homes/chet/src/bash/src/parse.y" - { - COMMAND *tc; ---- 2600,2624 ---- - =20 - case 57: -! #line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_simple_command ((yyvsp[(1) - (1)].element),= (COMMAND *)NULL); } - break; - =20 - case 58: -! #line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_simple_command ((yyvsp[(2) - (2)].element),= (yyvsp[(1) - (2)].command)); } - break; - =20 - case 59: -! #line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D clean_simple_command ((yyvsp[(1) - (1)].command)= ); } - break; - =20 - case 60: -! #line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 61: -! #line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - COMMAND *tc; -*************** -*** 2634,2703 **** - =20 - case 62: -! #line 750 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 63: -! #line 752 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 64: -! #line 756 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 65: -! #line 758 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 66: -! #line 760 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D make_while_command ((yyvsp[(2) - (5)].command), = (yyvsp[(4) - (5)].command)); } - break; - =20 - case 67: -! #line 762 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D make_until_command ((yyvsp[(2) - (5)].command), = (yyvsp[(4) - (5)].command)); } - break; - =20 - case 68: -! #line 764 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 69: -! #line 766 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 70: -! #line 768 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 71: -! #line 770 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 72: -! #line 772 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 73: -! #line 774 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 74: -! #line 776 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 75: -! #line 780 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (6)].word), add_st= ring_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_= lineno[word_top]); ---- 2639,2708 ---- - =20 - case 62: -! #line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 63: -! #line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 64: -! #line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 65: -! #line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 66: -! #line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_while_command ((yyvsp[(2) - (5)].command), = (yyvsp[(4) - (5)].command)); } - break; - =20 - case 67: -! #line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_until_command ((yyvsp[(2) - (5)].command), = (yyvsp[(4) - (5)].command)); } - break; - =20 - case 68: -! #line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 69: -! #line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 70: -! #line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 71: -! #line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 72: -! #line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 73: -! #line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 74: -! #line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 75: -! #line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (6)].word), add_st= ring_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_= lineno[word_top]); -*************** -*** 2707,2711 **** - =20 - case 76: -! #line 785 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (6)].word), add_st= ring_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_= lineno[word_top]); ---- 2712,2716 ---- - =20 - case 76: -! #line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (6)].word), add_st= ring_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_= lineno[word_top]); -*************** -*** 2715,2719 **** - =20 - case 77: -! #line 790 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (7)].word), add_st= ring_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_= lineno[word_top]); ---- 2720,2724 ---- - =20 - case 77: -! #line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (7)].word), add_st= ring_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_= lineno[word_top]); -*************** -*** 2723,2727 **** - =20 - case 78: -! #line 795 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (7)].word), add_st= ring_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_= lineno[word_top]); ---- 2728,2732 ---- - =20 - case 78: -! #line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (7)].word), add_st= ring_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_= lineno[word_top]); -*************** -*** 2731,2735 **** - =20 - case 79: -! #line 800 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (10)].word), REVER= SE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].comm= and), word_lineno[word_top]); ---- 2736,2740 ---- - =20 - case 79: -! #line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (10)].word), REVER= SE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].comm= and), word_lineno[word_top]); -*************** -*** 2739,2743 **** - =20 - case 80: -! #line 805 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (10)].word), REVER= SE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].comm= and), word_lineno[word_top]); ---- 2744,2748 ---- - =20 - case 80: -! #line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (10)].word), REVER= SE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].comm= and), word_lineno[word_top]); -*************** -*** 2747,2751 **** - =20 - case 81: -! #line 810 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (9)].word), (WORD_= LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); ---- 2752,2756 ---- - =20 - case 81: -! #line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (9)].word), (WORD_= LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); -*************** -*** 2755,2759 **** - =20 - case 82: -! #line 815 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (9)].word), (WORD_= LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); ---- 2760,2764 ---- - =20 - case 82: -! #line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (9)].word), (WORD_= LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); -*************** -*** 2763,2767 **** - =20 - case 83: -! #line 822 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (7)].word_l= ist), (yyvsp[(6) - (7)].command), arith_for_lineno); ---- 2768,2772 ---- - =20 - case 83: -! #line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (7)].word_l= ist), (yyvsp[(6) - (7)].command), arith_for_lineno); -*************** -*** 2771,2775 **** - =20 - case 84: -! #line 827 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (7)].word_l= ist), (yyvsp[(6) - (7)].command), arith_for_lineno); ---- 2776,2780 ---- - =20 - case 84: -! #line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (7)].word_l= ist), (yyvsp[(6) - (7)].command), arith_for_lineno); -*************** -*** 2779,2783 **** - =20 - case 85: -! #line 832 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (5)].word_l= ist), (yyvsp[(4) - (5)].command), arith_for_lineno); ---- 2784,2788 ---- - =20 - case 85: -! #line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (5)].word_l= ist), (yyvsp[(4) - (5)].command), arith_for_lineno); -*************** -*** 2787,2791 **** - =20 - case 86: -! #line 837 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (5)].word_l= ist), (yyvsp[(4) - (5)].command), arith_for_lineno); ---- 2792,2796 ---- - =20 - case 86: -! #line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (5)].word_l= ist), (yyvsp[(4) - (5)].command), arith_for_lineno); -*************** -*** 2795,2799 **** - =20 - case 87: -! #line 844 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (6)].word), add= _string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), wo= rd_lineno[word_top]); ---- 2800,2804 ---- - =20 - case 87: -! #line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (6)].word), add= _string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), wo= rd_lineno[word_top]); -*************** -*** 2803,2807 **** - =20 - case 88: -! #line 849 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (6)].word), add= _string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), wo= rd_lineno[word_top]); ---- 2808,2812 ---- - =20 - case 88: -! #line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (6)].word), add= _string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), wo= rd_lineno[word_top]); -*************** -*** 2811,2815 **** - =20 - case 89: -! #line 854 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (7)].word), add= _string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), wo= rd_lineno[word_top]); ---- 2816,2820 ---- - =20 - case 89: -! #line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (7)].word), add= _string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), wo= rd_lineno[word_top]); -*************** -*** 2819,2823 **** - =20 - case 90: -! #line 859 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (7)].word), add= _string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), wo= rd_lineno[word_top]); ---- 2824,2828 ---- - =20 - case 90: -! #line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (7)].word), add= _string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), wo= rd_lineno[word_top]); -*************** -*** 2827,2831 **** - =20 - case 91: -! #line 864 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (10)].word), RE= VERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].c= ommand), word_lineno[word_top]); ---- 2832,2836 ---- - =20 - case 91: -! #line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (10)].word), RE= VERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].c= ommand), word_lineno[word_top]); -*************** -*** 2835,2839 **** - =20 - case 92: -! #line 869 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (10)].word), RE= VERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].c= ommand), word_lineno[word_top]); ---- 2840,2844 ---- - =20 - case 92: -! #line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (10)].word), RE= VERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].c= ommand), word_lineno[word_top]); -*************** -*** 2843,2847 **** - =20 - case 93: -! #line 876 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_case_command ((yyvsp[(2) - (6)].word), (PATT= ERN_LIST *)NULL, word_lineno[word_top]); ---- 2848,2852 ---- - =20 - case 93: -! #line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_case_command ((yyvsp[(2) - (6)].word), (PATT= ERN_LIST *)NULL, word_lineno[word_top]); -*************** -*** 2851,2855 **** - =20 - case 94: -! #line 881 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_case_command ((yyvsp[(2) - (7)].word), (yyvs= p[(5) - (7)].pattern), word_lineno[word_top]); ---- 2856,2860 ---- - =20 - case 94: -! #line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_case_command ((yyvsp[(2) - (7)].word), (yyvs= p[(5) - (7)].pattern), word_lineno[word_top]); -*************** -*** 2859,2863 **** - =20 - case 95: -! #line 886 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_case_command ((yyvsp[(2) - (6)].word), (yyvs= p[(5) - (6)].pattern), word_lineno[word_top]); ---- 2864,2868 ---- - =20 - case 95: -! #line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_case_command ((yyvsp[(2) - (6)].word), (yyvs= p[(5) - (6)].pattern), word_lineno[word_top]); -*************** -*** 2867,2891 **** - =20 - case 96: -! #line 893 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D make_function_def ((yyvsp[(1) - (5)].word), (yyv= sp[(5) - (5)].command), function_dstart, function_bstart); } - break; - =20 - case 97: -! #line 896 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D make_function_def ((yyvsp[(2) - (6)].word), (yyv= sp[(6) - (6)].command), function_dstart, function_bstart); } - break; - =20 - case 98: -! #line 899 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D make_function_def ((yyvsp[(2) - (4)].word), (yyv= sp[(4) - (4)].command), function_dstart, function_bstart); } - break; - =20 - case 99: -! #line 903 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 100: -! #line 905 "/usr/homes/chet/src/bash/src/parse.y" - { - COMMAND *tc; ---- 2872,2896 ---- - =20 - case 96: -! #line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_function_def ((yyvsp[(1) - (5)].word), (yyv= sp[(5) - (5)].command), function_dstart, function_bstart); } - break; - =20 - case 97: -! #line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_function_def ((yyvsp[(2) - (6)].word), (yyv= sp[(6) - (6)].command), function_dstart, function_bstart); } - break; - =20 - case 98: -! #line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_function_def ((yyvsp[(2) - (4)].word), (yyv= sp[(4) - (4)].command), function_dstart, function_bstart); } - break; - =20 - case 99: -! #line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 100: -! #line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - COMMAND *tc; -*************** -*** 2919,2923 **** - =20 - case 101: -! #line 936 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_subshell_command ((yyvsp[(2) - (3)].command)= ); ---- 2924,2928 ---- - =20 - case 101: -! #line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_subshell_command ((yyvsp[(2) - (3)].command)= ); -*************** -*** 2927,2931 **** - =20 - case 102: -! #line 943 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_coproc_command ("COPROC", (yyvsp[(2) - (2)].= command)); ---- 2932,2936 ---- - =20 - case 102: -! #line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_coproc_command ("COPROC", (yyvsp[(2) - (2)].= command)); -*************** -*** 2935,2939 **** - =20 - case 103: -! #line 948 "/usr/homes/chet/src/bash/src/parse.y" - { - COMMAND *tc; ---- 2940,2944 ---- - =20 - case 103: -! #line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - COMMAND *tc; -*************** -*** 2955,2959 **** - =20 - case 104: -! #line 965 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_coproc_command ((yyvsp[(2) - (3)].word)->wor= d, (yyvsp[(3) - (3)].command)); ---- 2960,2964 ---- - =20 - case 104: -! #line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_coproc_command ((yyvsp[(2) - (3)].word)->wor= d, (yyvsp[(3) - (3)].command)); -*************** -*** 2963,2967 **** - =20 - case 105: -! #line 970 "/usr/homes/chet/src/bash/src/parse.y" - { - COMMAND *tc; ---- 2968,2972 ---- - =20 - case 105: -! #line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - COMMAND *tc; -*************** -*** 2983,2987 **** - =20 - case 106: -! #line 987 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D make_coproc_command ("COPROC", clean_simple_comma= nd ((yyvsp[(2) - (2)].command))); ---- 2988,2992 ---- - =20 - case 106: -! #line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_coproc_command ("COPROC", clean_simple_comma= nd ((yyvsp[(2) - (2)].command))); -*************** -*** 2991,3105 **** - =20 - case 107: -! #line 994 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (5)].command), (yy= vsp[(4) - (5)].command), (COMMAND *)NULL); } - break; - =20 - case 108: -! #line 996 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (7)].command), (yy= vsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } - break; - =20 - case 109: -! #line 998 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (6)].command), (yy= vsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } - break; - =20 - case 110: -! #line 1003 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D make_group_command ((yyvsp[(2) - (3)].command));= } - break; - =20 - case 111: -! #line 1007 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D make_arith_command ((yyvsp[(1) - (1)].word_list)= ); } - break; - =20 - case 112: -! #line 1011 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(2) - (3)].command); } - break; - =20 - case 113: -! #line 1015 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (4)].command), (yy= vsp[(4) - (4)].command), (COMMAND *)NULL); } - break; - =20 - case 114: -! #line 1017 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (6)].command), (yy= vsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } - break; - =20 - case 115: -! #line 1019 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (5)].command), (yy= vsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } - break; - =20 - case 117: -! #line 1024 "/usr/homes/chet/src/bash/src/parse.y" - { (yyvsp[(2) - (2)].pattern)->next =3D (yyvsp[(1) - (2)].pattern); (yy= val.pattern) =3D (yyvsp[(2) - (2)].pattern); } - break; - =20 - case 118: -! #line 1028 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(2) - (4)].word_list),= (yyvsp[(4) - (4)].command)); } - break; - =20 - case 119: -! #line 1030 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(2) - (4)].word_list),= (COMMAND *)NULL); } - break; - =20 - case 120: -! #line 1032 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(3) - (5)].word_list),= (yyvsp[(5) - (5)].command)); } - break; - =20 - case 121: -! #line 1034 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(3) - (5)].word_list),= (COMMAND *)NULL); } - break; - =20 - case 122: -! #line 1038 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.pattern) =3D (yyvsp[(1) - (2)].pattern); } - break; - =20 - case 123: -! #line 1040 "/usr/homes/chet/src/bash/src/parse.y" - { (yyvsp[(2) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yy= val.pattern) =3D (yyvsp[(2) - (3)].pattern); } - break; - =20 - case 124: -! #line 1042 "/usr/homes/chet/src/bash/src/parse.y" - { (yyvsp[(1) - (2)].pattern)->flags |=3D CASEPAT_FALLTHROUGH; (yyval.p= attern) =3D (yyvsp[(1) - (2)].pattern); } - break; - =20 - case 125: -! #line 1044 "/usr/homes/chet/src/bash/src/parse.y" - { (yyvsp[(2) - (3)].pattern)->flags |=3D CASEPAT_FALLTHROUGH; (yyvsp[(= 2) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yyval.pattern) =3D = (yyvsp[(2) - (3)].pattern); } - break; - =20 - case 126: -! #line 1046 "/usr/homes/chet/src/bash/src/parse.y" - { (yyvsp[(1) - (2)].pattern)->flags |=3D CASEPAT_TESTNEXT; (yyval.patt= ern) =3D (yyvsp[(1) - (2)].pattern); } - break; - =20 - case 127: -! #line 1048 "/usr/homes/chet/src/bash/src/parse.y" - { (yyvsp[(2) - (3)].pattern)->flags |=3D CASEPAT_TESTNEXT; (yyvsp[(2) = - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yyval.pattern) =3D (yy= vsp[(2) - (3)].pattern); } - break; - =20 - case 128: -! #line 1052 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.word_list) =3D make_word_list ((yyvsp[(1) - (1)].word), (WORD= _LIST *)NULL); } - break; - =20 - case 129: -! #line 1054 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.word_list) =3D make_word_list ((yyvsp[(3) - (3)].word), (yyvs= p[(1) - (3)].word_list)); } - break; - =20 - case 130: -! #line 1063 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D (yyvsp[(2) - (2)].command); ---- 2996,3110 ---- - =20 - case 107: -! #line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (5)].command), (yy= vsp[(4) - (5)].command), (COMMAND *)NULL); } - break; - =20 - case 108: -! #line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (7)].command), (yy= vsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } - break; - =20 - case 109: -! #line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (6)].command), (yy= vsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } - break; - =20 - case 110: -! #line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_group_command ((yyvsp[(2) - (3)].command));= } - break; - =20 - case 111: -! #line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_arith_command ((yyvsp[(1) - (1)].word_list)= ); } - break; - =20 - case 112: -! #line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(2) - (3)].command); } - break; - =20 - case 113: -! #line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (4)].command), (yy= vsp[(4) - (4)].command), (COMMAND *)NULL); } - break; - =20 - case 114: -! #line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (6)].command), (yy= vsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } - break; - =20 - case 115: -! #line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (5)].command), (yy= vsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } - break; - =20 - case 117: -! #line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyvsp[(2) - (2)].pattern)->next =3D (yyvsp[(1) - (2)].pattern); (yy= val.pattern) =3D (yyvsp[(2) - (2)].pattern); } - break; - =20 - case 118: -! #line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(2) - (4)].word_list),= (yyvsp[(4) - (4)].command)); } - break; - =20 - case 119: -! #line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(2) - (4)].word_list),= (COMMAND *)NULL); } - break; - =20 - case 120: -! #line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(3) - (5)].word_list),= (yyvsp[(5) - (5)].command)); } - break; - =20 - case 121: -! #line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(3) - (5)].word_list),= (COMMAND *)NULL); } - break; - =20 - case 122: -! #line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.pattern) =3D (yyvsp[(1) - (2)].pattern); } - break; - =20 - case 123: -! #line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyvsp[(2) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yy= val.pattern) =3D (yyvsp[(2) - (3)].pattern); } - break; - =20 - case 124: -! #line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyvsp[(1) - (2)].pattern)->flags |=3D CASEPAT_FALLTHROUGH; (yyval.p= attern) =3D (yyvsp[(1) - (2)].pattern); } - break; - =20 - case 125: -! #line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyvsp[(2) - (3)].pattern)->flags |=3D CASEPAT_FALLTHROUGH; (yyvsp[(= 2) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yyval.pattern) =3D = (yyvsp[(2) - (3)].pattern); } - break; - =20 - case 126: -! #line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyvsp[(1) - (2)].pattern)->flags |=3D CASEPAT_TESTNEXT; (yyval.patt= ern) =3D (yyvsp[(1) - (2)].pattern); } - break; - =20 - case 127: -! #line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyvsp[(2) - (3)].pattern)->flags |=3D CASEPAT_TESTNEXT; (yyvsp[(2) = - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yyval.pattern) =3D (yy= vsp[(2) - (3)].pattern); } - break; - =20 - case 128: -! #line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.word_list) =3D make_word_list ((yyvsp[(1) - (1)].word), (WORD= _LIST *)NULL); } - break; - =20 - case 129: -! #line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.word_list) =3D make_word_list ((yyvsp[(3) - (3)].word), (yyvs= p[(1) - (3)].word_list)); } - break; - =20 - case 130: -! #line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D (yyvsp[(2) - (2)].command); -*************** -*** 3110,3114 **** - =20 - case 132: -! #line 1072 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D (yyvsp[(2) - (2)].command); ---- 3115,3119 ---- - =20 - case 132: -! #line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D (yyvsp[(2) - (2)].command); -*************** -*** 3117,3121 **** - =20 - case 134: -! #line 1079 "/usr/homes/chet/src/bash/src/parse.y" - { - if ((yyvsp[(1) - (3)].command)->type =3D=3D cm_connection) ---- 3122,3126 ---- - =20 - case 134: -! #line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - if ((yyvsp[(1) - (3)].command)->type =3D=3D cm_connection) -*************** -*** 3127,3141 **** - =20 - case 136: -! #line 1090 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), AND_AND); } - break; - =20 - case 137: -! #line 1092 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), OR_OR); } - break; - =20 - case 138: -! #line 1094 "/usr/homes/chet/src/bash/src/parse.y" - { - if ((yyvsp[(1) - (4)].command)->type =3D=3D cm_connection) ---- 3132,3146 ---- - =20 - case 136: -! #line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), AND_AND); } - break; - =20 - case 137: -! #line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), OR_OR); } - break; - =20 - case 138: -! #line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - if ((yyvsp[(1) - (4)].command)->type =3D=3D cm_connection) -*************** -*** 3147,3181 **** - =20 - case 139: -! #line 1101 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), ';'); } - break; - =20 - case 140: -! #line 1103 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), ';'); } - break; - =20 - case 141: -! #line 1105 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 144: -! #line 1113 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.number) =3D '\n'; } - break; - =20 - case 145: -! #line 1115 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.number) =3D ';'; } - break; - =20 - case 146: -! #line 1117 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.number) =3D yacc_EOF; } - break; - =20 - case 149: -! #line 1131 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D (yyvsp[(1) - (1)].command); ---- 3152,3186 ---- - =20 - case 139: -! #line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), ';'); } - break; - =20 - case 140: -! #line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), ';'); } - break; - =20 - case 141: -! #line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 144: -! #line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.number) =3D '\n'; } - break; - =20 - case 145: -! #line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.number) =3D ';'; } - break; - =20 - case 146: -! #line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.number) =3D yacc_EOF; } - break; - =20 - case 149: -! #line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D (yyvsp[(1) - (1)].command); -*************** -*** 3193,3197 **** - =20 - case 150: -! #line 1144 "/usr/homes/chet/src/bash/src/parse.y" - { - if ((yyvsp[(1) - (2)].command)->type =3D=3D cm_connection) ---- 3198,3202 ---- - =20 - case 150: -! #line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - if ((yyvsp[(1) - (2)].command)->type =3D=3D cm_connection) -*************** -*** 3212,3216 **** - =20 - case 151: -! #line 1160 "/usr/homes/chet/src/bash/src/parse.y" - { - (yyval.command) =3D (yyvsp[(1) - (2)].command); ---- 3217,3221 ---- - =20 - case 151: -! #line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D (yyvsp[(1) - (2)].command); -*************** -*** 3228,3242 **** - =20 - case 152: -! #line 1175 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), AND_AND); } - break; - =20 - case 153: -! #line 1177 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), OR_OR); } - break; - =20 - case 154: -! #line 1179 "/usr/homes/chet/src/bash/src/parse.y" - { - if ((yyvsp[(1) - (3)].command)->type =3D=3D cm_connection) ---- 3233,3247 ---- - =20 - case 152: -! #line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), AND_AND); } - break; - =20 - case 153: -! #line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), OR_OR); } - break; - =20 - case 154: -! #line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - if ((yyvsp[(1) - (3)].command)->type =3D=3D cm_connection) -*************** -*** 3248,3267 **** - =20 - case 155: -! #line 1186 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (3)].command), (yy= vsp[(3) - (3)].command), ';'); } - break; - =20 - case 156: -! #line 1189 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 157: -! #line 1193 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 158: -! #line 1195 "/usr/homes/chet/src/bash/src/parse.y" - { - if ((yyvsp[(2) - (2)].command)) ---- 3253,3272 ---- - =20 - case 155: -! #line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (3)].command), (yy= vsp[(3) - (3)].command), ';'); } - break; - =20 - case 156: -! #line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 157: -! #line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 158: -! #line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - if ((yyvsp[(2) - (2)].command)) -*************** -*** 3272,3276 **** - =20 - case 159: -! #line 1201 "/usr/homes/chet/src/bash/src/parse.y" - { - if ((yyvsp[(2) - (2)].command)) ---- 3277,3281 ---- - =20 - case 159: -! #line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - if ((yyvsp[(2) - (2)].command)) -*************** -*** 3281,3285 **** - =20 - case 160: -! #line 1207 "/usr/homes/chet/src/bash/src/parse.y" - { - ELEMENT x; ---- 3286,3290 ---- - =20 - case 160: -! #line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - ELEMENT x; -*************** -*** 3301,3305 **** - =20 - case 161: -! #line 1224 "/usr/homes/chet/src/bash/src/parse.y" - { - ELEMENT x; ---- 3306,3310 ---- - =20 - case 161: -! #line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - ELEMENT x; -*************** -*** 3322,3331 **** - =20 - case 162: -! #line 1244 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), '|'); } - break; - =20 - case 163: -! #line 1246 "/usr/homes/chet/src/bash/src/parse.y" - { - /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ ---- 3327,3336 ---- - =20 - case 162: -! #line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), '|'); } - break; - =20 - case 163: -! #line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ -*************** -*** 3353,3372 **** - =20 - case 164: -! #line 1269 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 165: -! #line 1273 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.number) =3D CMD_TIME_PIPELINE; } - break; - =20 - case 166: -! #line 1275 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.number) =3D CMD_TIME_PIPELINE|CMD_TIME_POSIX; } - break; - =20 - case 167: -! #line 1277 "/usr/homes/chet/src/bash/src/parse.y" - { (yyval.number) =3D CMD_TIME_PIPELINE|CMD_TIME_POSIX; } - break; ---- 3358,3377 ---- - =20 - case 164: -! #line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 165: -! #line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.number) =3D CMD_TIME_PIPELINE; } - break; - =20 - case 166: -! #line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.number) =3D CMD_TIME_PIPELINE|CMD_TIME_POSIX; } - break; - =20 - case 167: -! #line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.number) =3D CMD_TIME_PIPELINE|CMD_TIME_POSIX; } - break; -*************** -*** 3374,3378 **** - =20 - /* Line 1267 of yacc.c. */ -! #line 3377 "y.tab.c" - default: break; - } ---- 3379,3383 ---- - =20 - /* Line 1267 of yacc.c. */ -! #line 3382 "y.tab.c" - default: break; - } -*************** -*** 3588,3592 **** - =20 - =20 -! #line 1279 "/usr/homes/chet/src/bash/src/parse.y" - =20 - =20 ---- 3593,3597 ---- - =20 - =20 -! #line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - =20 - =20 -*************** -*** 4949,4952 **** ---- 4954,4972 ---- - static int esacs_needed_count; - =20 -+ static void -+ push_heredoc (r) -+ REDIRECT *r; -+ { -+ if (need_here_doc >=3D HEREDOC_MAX) -+ { -+ last_command_exit_value =3D EX_BADUSAGE; -+ need_here_doc =3D 0; -+ report_syntax_error (_("maximum here-document count exceeded")); -+ reset_parser (); -+ exit_shell (last_command_exit_value); -+ } -+ redir_stack[need_here_doc++] =3D r; -+ } -+=20 - void - gather_here_documents () -*************** -*** 8542,8543 **** ---- 8562,8564 ---- - } - #endif /* HANDLE_MULTIBYTE */ -+=20 -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 27 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 28 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-029 b/src/patches/bash/bash43-029 deleted file mode 100644 index 93bd390a8..000000000 --- a/src/patches/bash/bash43-029 +++ /dev/null @@ -1,59 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-029 - -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. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3.28/make_cmd.c 2011-12-16 08:08:01.000000000 -0500 ---- make_cmd.c 2014-10-02 11:24:23.000000000 -0400 -*************** -*** 693,696 **** ---- 693,697 ---- - temp->redirector =3D source; - temp->redirectee =3D dest_and_filename; -+ temp->here_doc_eof =3D 0; - temp->instruction =3D instruction; - temp->flags =3D 0; -*** ../bash-4.3.28/copy_cmd.c 2009-09-11 16:28:02.000000000 -0400 ---- copy_cmd.c 2014-10-02 11:24:23.000000000 -0400 -*************** -*** 127,131 **** - case r_reading_until: - case r_deblank_reading_until: -! new_redirect->here_doc_eof =3D savestring (redirect->here_doc_eof); - /*FALLTHROUGH*/ - case r_reading_string: ---- 127,131 ---- - case r_reading_until: - case r_deblank_reading_until: -! new_redirect->here_doc_eof =3D redirect->here_doc_eof ? savestring (= redirect->here_doc_eof) : 0; - /*FALLTHROUGH*/ - case r_reading_string: -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 28 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 29 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-030 b/src/patches/bash/bash43-030 deleted file mode 100644 index 78984da26..000000000 --- a/src/patches/bash/bash43-030 +++ /dev/null @@ -1,2064 +0,0 @@ - BASH PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bash-Release: 4.3 -Patch-ID: bash43-030 - -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. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3.29/builtins/evalstring.c 2014-10-01 12:57:47.000000000 -0400 ---- builtins/evalstring.c 2014-10-03 11:57:04.000000000 -0400 -*************** -*** 309,318 **** - struct fd_bitmap *bitmap; - =20 -! if ((flags & SEVAL_FUNCDEF) && command->type !=3D cm_function_def) - { -! internal_warning ("%s: ignoring function definition attempt", from_fil= e); -! should_jump_to_top_level =3D 0; -! last_result =3D last_command_exit_value =3D EX_BADUSAGE; -! break; - } - =20 ---- 313,335 ---- - struct fd_bitmap *bitmap; - =20 -! if (flags & SEVAL_FUNCDEF) - { -! char *x; -!=20 -! /* 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 !=3D cm_function_def || -! ((x =3D parser_remaining_input ()) && *x) || -! (STREQ (from_file, command->value.Function_def->name->word) =3D=3D= 0)) -! { -! internal_warning (_("%s: ignoring function definition attempt"), f= rom_file); -! should_jump_to_top_level =3D 0; -! last_result =3D last_command_exit_value =3D EX_BADUSAGE; -! reset_parser (); -! break; -! } - } - =20 -*************** -*** 379,383 **** - =20 - if (flags & SEVAL_ONECMD) -! break; - } - } ---- 396,403 ---- - =20 - if (flags & SEVAL_ONECMD) -! { -! reset_parser (); -! break; -! } - } - } -*** ../bash-4.3.29/parse.y 2014-10-01 12:58:43.000000000 -0400 ---- parse.y 2014-10-03 14:48:59.000000000 -0400 -*************** -*** 2539,2542 **** ---- 2539,2552 ---- - } - =20 -+ char * -+ parser_remaining_input () -+ { -+ if (shell_input_line =3D=3D 0) -+ return 0; -+ if (shell_input_line_index < 0 || shell_input_line_index >=3D shell_inpu= t_line_len) -+ return '\0'; /* XXX */ -+ return (shell_input_line + shell_input_line_index); -+ } -+=20 - #ifdef INCLUDE_UNUSED - /* Back the input pointer up by one, effectively `ungetting' a character. = */ -*************** -*** 4028,4033 **** - /* reset_parser clears shell_input_line and associated variables */ - restore_input_line_state (&ls); -! if (interactive) -! token_to_read =3D 0; - =20 - /* Need to find how many characters parse_and_execute consumed, update ---- 4053,4058 ---- - /* reset_parser clears shell_input_line and associated variables */ - restore_input_line_state (&ls); -!=20 -! token_to_read =3D 0; - =20 - /* Need to find how many characters parse_and_execute consumed, update -*** ../bash-4.3.29/shell.h 2014-10-01 12:57:39.000000000 -0400 ---- shell.h 2014-10-03 14:49:12.000000000 -0400 -*************** -*** 181,184 **** ---- 181,186 ---- - =20 - /* Let's try declaring these here. */ -+ extern char *parser_remaining_input __P((void)); -+=20 - extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *)); - extern void restore_parser_state __P((sh_parser_state_t *)); -*** ../bash-4.3.28/y.tab.c 2014-10-01 13:09:46.000000000 -0400 ---- y.tab.c 2014-10-04 19:26:22.000000000 -0400 -*************** -*** 169,173 **** - =20 - /* Copy the first part of user declarations. */ -! #line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - =20 - #include "config.h" ---- 169,173 ---- - =20 - /* Copy the first part of user declarations. */ -! #line 21 "/usr/src/local/bash/bash-4.3-patched/parse.y" - =20 - #include "config.h" -*************** -*** 498,502 **** - #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - typedef union YYSTYPE -! #line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - WORD_DESC *word; /* the word that we read. */ ---- 498,502 ---- - #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - typedef union YYSTYPE -! #line 329 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - WORD_DESC *word; /* the word that we read. */ -*************** -*** 2099,2103 **** - { - case 2: -! #line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - /* Case of regular command. Discard the error ---- 2099,2103 ---- - { - case 2: -! #line 383 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - /* Case of regular command. Discard the error -*************** -*** 2113,2117 **** - =20 - case 3: -! #line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - /* Case of regular command, but not a very ---- 2113,2117 ---- - =20 - case 3: -! #line 394 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - /* Case of regular command, but not a very -*************** -*** 2125,2129 **** - =20 - case 4: -! #line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - /* Error during parsing. Return NULL command. */ ---- 2125,2129 ---- - =20 - case 4: -! #line 403 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - /* Error during parsing. Return NULL command. */ -*************** -*** 2143,2147 **** - =20 - case 5: -! #line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - /* Case of EOF seen by itself. Do ignoreeof or ---- 2143,2147 ---- - =20 - case 5: -! #line 418 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - /* Case of EOF seen by itself. Do ignoreeof or -*************** -*** 2154,2168 **** - =20 - case 6: -! #line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.word_list) =3D make_word_list ((yyvsp[(1) - (1)].word), (WORD= _LIST *)NULL); } - break; - =20 - case 7: -! #line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.word_list) =3D make_word_list ((yyvsp[(2) - (2)].word), (yyvs= p[(1) - (2)].word_list)); } - break; - =20 - case 8: -! #line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 1; ---- 2154,2168 ---- - =20 - case 6: -! #line 428 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.word_list) =3D make_word_list ((yyvsp[(1) - (1)].word), (WORD= _LIST *)NULL); } - break; - =20 - case 7: -! #line 430 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.word_list) =3D make_word_list ((yyvsp[(2) - (2)].word), (yyvs= p[(1) - (2)].word_list)); } - break; - =20 - case 8: -! #line 434 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D 1; -*************** -*** 2173,2177 **** - =20 - case 9: -! #line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 0; ---- 2173,2177 ---- - =20 - case 9: -! #line 440 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D 0; -*************** -*** 2182,2186 **** - =20 - case 10: -! #line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2182,2186 ---- - =20 - case 10: -! #line 446 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2191,2195 **** - =20 - case 11: -! #line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2191,2195 ---- - =20 - case 11: -! #line 452 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2200,2204 **** - =20 - case 12: -! #line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2200,2204 ---- - =20 - case 12: -! #line 458 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2209,2213 **** - =20 - case 13: -! #line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2209,2213 ---- - =20 - case 13: -! #line 464 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2218,2222 **** - =20 - case 14: -! #line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 1; ---- 2218,2222 ---- - =20 - case 14: -! #line 470 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D 1; -*************** -*** 2227,2231 **** - =20 - case 15: -! #line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2227,2231 ---- - =20 - case 15: -! #line 476 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2236,2240 **** - =20 - case 16: -! #line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2236,2240 ---- - =20 - case 16: -! #line 482 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2245,2249 **** - =20 - case 17: -! #line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 1; ---- 2245,2249 ---- - =20 - case 17: -! #line 488 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D 1; -*************** -*** 2254,2258 **** - =20 - case 18: -! #line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2254,2258 ---- - =20 - case 18: -! #line 494 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2263,2267 **** - =20 - case 19: -! #line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2263,2267 ---- - =20 - case 19: -! #line 500 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2272,2276 **** - =20 - case 20: -! #line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 0; ---- 2272,2276 ---- - =20 - case 20: -! #line 506 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D 0; -*************** -*** 2281,2285 **** - =20 - case 21: -! #line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2281,2285 ---- - =20 - case 21: -! #line 512 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2290,2294 **** - =20 - case 22: -! #line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2290,2294 ---- - =20 - case 22: -! #line 518 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2299,2303 **** - =20 - case 23: -! #line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 0; ---- 2299,2303 ---- - =20 - case 23: -! #line 524 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D 0; -*************** -*** 2309,2313 **** - =20 - case 24: -! #line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2309,2313 ---- - =20 - case 24: -! #line 531 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2319,2323 **** - =20 - case 25: -! #line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2319,2323 ---- - =20 - case 25: -! #line 538 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2329,2333 **** - =20 - case 26: -! #line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 0; ---- 2329,2333 ---- - =20 - case 26: -! #line 545 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D 0; -*************** -*** 2339,2343 **** - =20 - case 27: -! #line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2339,2343 ---- - =20 - case 27: -! #line 552 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2349,2353 **** - =20 - case 28: -! #line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2349,2353 ---- - =20 - case 28: -! #line 559 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2359,2363 **** - =20 - case 29: -! #line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 0; ---- 2359,2363 ---- - =20 - case 29: -! #line 566 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D 0; -*************** -*** 2368,2372 **** - =20 - case 30: -! #line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2368,2372 ---- - =20 - case 30: -! #line 572 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2377,2381 **** - =20 - case 31: -! #line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2377,2381 ---- - =20 - case 31: -! #line 578 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2386,2390 **** - =20 - case 32: -! #line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 0; ---- 2386,2390 ---- - =20 - case 32: -! #line 584 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D 0; -*************** -*** 2395,2399 **** - =20 - case 33: -! #line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2395,2399 ---- - =20 - case 33: -! #line 590 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2404,2408 **** - =20 - case 34: -! #line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2404,2408 ---- - =20 - case 34: -! #line 596 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2413,2417 **** - =20 - case 35: -! #line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 1; ---- 2413,2417 ---- - =20 - case 35: -! #line 602 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D 1; -*************** -*** 2422,2426 **** - =20 - case 36: -! #line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2422,2426 ---- - =20 - case 36: -! #line 608 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2431,2435 **** - =20 - case 37: -! #line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2431,2435 ---- - =20 - case 37: -! #line 614 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2440,2444 **** - =20 - case 38: -! #line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 0; ---- 2440,2444 ---- - =20 - case 38: -! #line 620 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D 0; -*************** -*** 2449,2453 **** - =20 - case 39: -! #line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2449,2453 ---- - =20 - case 39: -! #line 626 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2458,2462 **** - =20 - case 40: -! #line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2458,2462 ---- - =20 - case 40: -! #line 632 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2467,2471 **** - =20 - case 41: -! #line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 1; ---- 2467,2471 ---- - =20 - case 41: -! #line 638 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D 1; -*************** -*** 2476,2480 **** - =20 - case 42: -! #line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2476,2480 ---- - =20 - case 42: -! #line 644 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2485,2489 **** - =20 - case 43: -! #line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2485,2489 ---- - =20 - case 43: -! #line 650 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2494,2498 **** - =20 - case 44: -! #line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 1; ---- 2494,2498 ---- - =20 - case 44: -! #line 656 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D 1; -*************** -*** 2503,2507 **** - =20 - case 45: -! #line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2503,2507 ---- - =20 - case 45: -! #line 662 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2512,2516 **** - =20 - case 46: -! #line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2512,2516 ---- - =20 - case 46: -! #line 668 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2521,2525 **** - =20 - case 47: -! #line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 0; ---- 2521,2525 ---- - =20 - case 47: -! #line 674 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D 0; -*************** -*** 2530,2534 **** - =20 - case 48: -! #line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); ---- 2530,2534 ---- - =20 - case 48: -! #line 680 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D (yyvsp[(1) - (3)].number); -*************** -*** 2539,2543 **** - =20 - case 49: -! #line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); ---- 2539,2543 ---- - =20 - case 49: -! #line 686 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.filename =3D (yyvsp[(1) - (3)].word); -*************** -*** 2548,2552 **** - =20 - case 50: -! #line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 1; ---- 2548,2552 ---- - =20 - case 50: -! #line 692 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D 1; -*************** -*** 2557,2561 **** - =20 - case 51: -! #line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - source.dest =3D 1; ---- 2557,2561 ---- - =20 - case 51: -! #line 698 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - source.dest =3D 1; -*************** -*** 2566,2585 **** - =20 - case 52: -! #line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.element).word =3D (yyvsp[(1) - (1)].word); (yyval.element).re= direct =3D 0; } - break; - =20 - case 53: -! #line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.element).word =3D (yyvsp[(1) - (1)].word); (yyval.element).re= direct =3D 0; } - break; - =20 - case 54: -! #line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.element).redirect =3D (yyvsp[(1) - (1)].redirect); (yyval.ele= ment).word =3D 0; } - break; - =20 - case 55: -! #line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.redirect) =3D (yyvsp[(1) - (1)].redirect); ---- 2566,2585 ---- - =20 - case 52: -! #line 706 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.element).word =3D (yyvsp[(1) - (1)].word); (yyval.element).re= direct =3D 0; } - break; - =20 - case 53: -! #line 708 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.element).word =3D (yyvsp[(1) - (1)].word); (yyval.element).re= direct =3D 0; } - break; - =20 - case 54: -! #line 710 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.element).redirect =3D (yyvsp[(1) - (1)].redirect); (yyval.ele= ment).word =3D 0; } - break; - =20 - case 55: -! #line 714 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.redirect) =3D (yyvsp[(1) - (1)].redirect); -*************** -*** 2588,2592 **** - =20 - case 56: -! #line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - register REDIRECT *t; ---- 2588,2592 ---- - =20 - case 56: -! #line 718 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - register REDIRECT *t; -*************** -*** 2600,2624 **** - =20 - case 57: -! #line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_simple_command ((yyvsp[(1) - (1)].element),= (COMMAND *)NULL); } - break; - =20 - case 58: -! #line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_simple_command ((yyvsp[(2) - (2)].element),= (yyvsp[(1) - (2)].command)); } - break; - =20 - case 59: -! #line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D clean_simple_command ((yyvsp[(1) - (1)].command)= ); } - break; - =20 - case 60: -! #line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 61: -! #line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - COMMAND *tc; ---- 2600,2624 ---- - =20 - case 57: -! #line 729 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D make_simple_command ((yyvsp[(1) - (1)].element),= (COMMAND *)NULL); } - break; - =20 - case 58: -! #line 731 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D make_simple_command ((yyvsp[(2) - (2)].element),= (yyvsp[(1) - (2)].command)); } - break; - =20 - case 59: -! #line 735 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D clean_simple_command ((yyvsp[(1) - (1)].command)= ); } - break; - =20 - case 60: -! #line 737 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 61: -! #line 739 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - COMMAND *tc; -*************** -*** 2639,2708 **** - =20 - case 62: -! #line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 63: -! #line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 64: -! #line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 65: -! #line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 66: -! #line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_while_command ((yyvsp[(2) - (5)].command), = (yyvsp[(4) - (5)].command)); } - break; - =20 - case 67: -! #line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_until_command ((yyvsp[(2) - (5)].command), = (yyvsp[(4) - (5)].command)); } - break; - =20 - case 68: -! #line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 69: -! #line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 70: -! #line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 71: -! #line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 72: -! #line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 73: -! #line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 74: -! #line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 75: -! #line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (6)].word), add_st= ring_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_= lineno[word_top]); ---- 2639,2708 ---- - =20 - case 62: -! #line 755 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 63: -! #line 757 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 64: -! #line 761 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 65: -! #line 763 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 66: -! #line 765 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D make_while_command ((yyvsp[(2) - (5)].command), = (yyvsp[(4) - (5)].command)); } - break; - =20 - case 67: -! #line 767 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D make_until_command ((yyvsp[(2) - (5)].command), = (yyvsp[(4) - (5)].command)); } - break; - =20 - case 68: -! #line 769 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 69: -! #line 771 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 70: -! #line 773 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 71: -! #line 775 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 72: -! #line 777 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 73: -! #line 779 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 74: -! #line 781 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 75: -! #line 785 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (6)].word), add_st= ring_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_= lineno[word_top]); -*************** -*** 2712,2716 **** - =20 - case 76: -! #line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (6)].word), add_st= ring_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_= lineno[word_top]); ---- 2712,2716 ---- - =20 - case 76: -! #line 790 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (6)].word), add_st= ring_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_= lineno[word_top]); -*************** -*** 2720,2724 **** - =20 - case 77: -! #line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (7)].word), add_st= ring_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_= lineno[word_top]); ---- 2720,2724 ---- - =20 - case 77: -! #line 795 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (7)].word), add_st= ring_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_= lineno[word_top]); -*************** -*** 2728,2732 **** - =20 - case 78: -! #line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (7)].word), add_st= ring_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_= lineno[word_top]); ---- 2728,2732 ---- - =20 - case 78: -! #line 800 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (7)].word), add_st= ring_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_= lineno[word_top]); -*************** -*** 2736,2740 **** - =20 - case 79: -! #line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (10)].word), REVER= SE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].comm= and), word_lineno[word_top]); ---- 2736,2740 ---- - =20 - case 79: -! #line 805 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (10)].word), REVER= SE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].comm= and), word_lineno[word_top]); -*************** -*** 2744,2748 **** - =20 - case 80: -! #line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (10)].word), REVER= SE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].comm= and), word_lineno[word_top]); ---- 2744,2748 ---- - =20 - case 80: -! #line 810 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (10)].word), REVER= SE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].comm= and), word_lineno[word_top]); -*************** -*** 2752,2756 **** - =20 - case 81: -! #line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (9)].word), (WORD_= LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); ---- 2752,2756 ---- - =20 - case 81: -! #line 815 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (9)].word), (WORD_= LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); -*************** -*** 2760,2764 **** - =20 - case 82: -! #line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (9)].word), (WORD_= LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); ---- 2760,2764 ---- - =20 - case 82: -! #line 820 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_for_command ((yyvsp[(2) - (9)].word), (WORD_= LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); -*************** -*** 2768,2772 **** - =20 - case 83: -! #line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (7)].word_l= ist), (yyvsp[(6) - (7)].command), arith_for_lineno); ---- 2768,2772 ---- - =20 - case 83: -! #line 827 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (7)].word_l= ist), (yyvsp[(6) - (7)].command), arith_for_lineno); -*************** -*** 2776,2780 **** - =20 - case 84: -! #line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (7)].word_l= ist), (yyvsp[(6) - (7)].command), arith_for_lineno); ---- 2776,2780 ---- - =20 - case 84: -! #line 832 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (7)].word_l= ist), (yyvsp[(6) - (7)].command), arith_for_lineno); -*************** -*** 2784,2788 **** - =20 - case 85: -! #line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (5)].word_l= ist), (yyvsp[(4) - (5)].command), arith_for_lineno); ---- 2784,2788 ---- - =20 - case 85: -! #line 837 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (5)].word_l= ist), (yyvsp[(4) - (5)].command), arith_for_lineno); -*************** -*** 2792,2796 **** - =20 - case 86: -! #line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (5)].word_l= ist), (yyvsp[(4) - (5)].command), arith_for_lineno); ---- 2792,2796 ---- - =20 - case 86: -! #line 842 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (5)].word_l= ist), (yyvsp[(4) - (5)].command), arith_for_lineno); -*************** -*** 2800,2804 **** - =20 - case 87: -! #line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (6)].word), add= _string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), wo= rd_lineno[word_top]); ---- 2800,2804 ---- - =20 - case 87: -! #line 849 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (6)].word), add= _string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), wo= rd_lineno[word_top]); -*************** -*** 2808,2812 **** - =20 - case 88: -! #line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (6)].word), add= _string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), wo= rd_lineno[word_top]); ---- 2808,2812 ---- - =20 - case 88: -! #line 854 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (6)].word), add= _string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), wo= rd_lineno[word_top]); -*************** -*** 2816,2820 **** - =20 - case 89: -! #line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (7)].word), add= _string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), wo= rd_lineno[word_top]); ---- 2816,2820 ---- - =20 - case 89: -! #line 859 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (7)].word), add= _string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), wo= rd_lineno[word_top]); -*************** -*** 2824,2828 **** - =20 - case 90: -! #line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (7)].word), add= _string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), wo= rd_lineno[word_top]); ---- 2824,2828 ---- - =20 - case 90: -! #line 864 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (7)].word), add= _string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), wo= rd_lineno[word_top]); -*************** -*** 2832,2836 **** - =20 - case 91: -! #line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (10)].word), RE= VERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].c= ommand), word_lineno[word_top]); ---- 2832,2836 ---- - =20 - case 91: -! #line 869 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (10)].word), RE= VERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].c= ommand), word_lineno[word_top]); -*************** -*** 2840,2844 **** - =20 - case 92: -! #line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (10)].word), RE= VERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].c= ommand), word_lineno[word_top]); ---- 2840,2844 ---- - =20 - case 92: -! #line 874 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_select_command ((yyvsp[(2) - (10)].word), RE= VERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].c= ommand), word_lineno[word_top]); -*************** -*** 2848,2852 **** - =20 - case 93: -! #line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_case_command ((yyvsp[(2) - (6)].word), (PATT= ERN_LIST *)NULL, word_lineno[word_top]); ---- 2848,2852 ---- - =20 - case 93: -! #line 881 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_case_command ((yyvsp[(2) - (6)].word), (PATT= ERN_LIST *)NULL, word_lineno[word_top]); -*************** -*** 2856,2860 **** - =20 - case 94: -! #line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_case_command ((yyvsp[(2) - (7)].word), (yyvs= p[(5) - (7)].pattern), word_lineno[word_top]); ---- 2856,2860 ---- - =20 - case 94: -! #line 886 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_case_command ((yyvsp[(2) - (7)].word), (yyvs= p[(5) - (7)].pattern), word_lineno[word_top]); -*************** -*** 2864,2868 **** - =20 - case 95: -! #line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_case_command ((yyvsp[(2) - (6)].word), (yyvs= p[(5) - (6)].pattern), word_lineno[word_top]); ---- 2864,2868 ---- - =20 - case 95: -! #line 891 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_case_command ((yyvsp[(2) - (6)].word), (yyvs= p[(5) - (6)].pattern), word_lineno[word_top]); -*************** -*** 2872,2896 **** - =20 - case 96: -! #line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_function_def ((yyvsp[(1) - (5)].word), (yyv= sp[(5) - (5)].command), function_dstart, function_bstart); } - break; - =20 - case 97: -! #line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_function_def ((yyvsp[(2) - (6)].word), (yyv= sp[(6) - (6)].command), function_dstart, function_bstart); } - break; - =20 - case 98: -! #line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_function_def ((yyvsp[(2) - (4)].word), (yyv= sp[(4) - (4)].command), function_dstart, function_bstart); } - break; - =20 - case 99: -! #line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 100: -! #line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - COMMAND *tc; ---- 2872,2896 ---- - =20 - case 96: -! #line 898 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D make_function_def ((yyvsp[(1) - (5)].word), (yyv= sp[(5) - (5)].command), function_dstart, function_bstart); } - break; - =20 - case 97: -! #line 901 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D make_function_def ((yyvsp[(2) - (6)].word), (yyv= sp[(6) - (6)].command), function_dstart, function_bstart); } - break; - =20 - case 98: -! #line 904 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D make_function_def ((yyvsp[(2) - (4)].word), (yyv= sp[(4) - (4)].command), function_dstart, function_bstart); } - break; - =20 - case 99: -! #line 908 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 100: -! #line 910 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - COMMAND *tc; -*************** -*** 2924,2928 **** - =20 - case 101: -! #line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_subshell_command ((yyvsp[(2) - (3)].command)= ); ---- 2924,2928 ---- - =20 - case 101: -! #line 941 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_subshell_command ((yyvsp[(2) - (3)].command)= ); -*************** -*** 2932,2936 **** - =20 - case 102: -! #line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_coproc_command ("COPROC", (yyvsp[(2) - (2)].= command)); ---- 2932,2936 ---- - =20 - case 102: -! #line 948 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_coproc_command ("COPROC", (yyvsp[(2) - (2)].= command)); -*************** -*** 2940,2944 **** - =20 - case 103: -! #line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - COMMAND *tc; ---- 2940,2944 ---- - =20 - case 103: -! #line 953 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - COMMAND *tc; -*************** -*** 2960,2964 **** - =20 - case 104: -! #line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_coproc_command ((yyvsp[(2) - (3)].word)->wor= d, (yyvsp[(3) - (3)].command)); ---- 2960,2964 ---- - =20 - case 104: -! #line 970 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_coproc_command ((yyvsp[(2) - (3)].word)->wor= d, (yyvsp[(3) - (3)].command)); -*************** -*** 2968,2972 **** - =20 - case 105: -! #line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - COMMAND *tc; ---- 2968,2972 ---- - =20 - case 105: -! #line 975 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - COMMAND *tc; -*************** -*** 2988,2992 **** - =20 - case 106: -! #line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D make_coproc_command ("COPROC", clean_simple_comma= nd ((yyvsp[(2) - (2)].command))); ---- 2988,2992 ---- - =20 - case 106: -! #line 992 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D make_coproc_command ("COPROC", clean_simple_comma= nd ((yyvsp[(2) - (2)].command))); -*************** -*** 2996,3110 **** - =20 - case 107: -! #line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (5)].command), (yy= vsp[(4) - (5)].command), (COMMAND *)NULL); } - break; - =20 - case 108: -! #line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (7)].command), (yy= vsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } - break; - =20 - case 109: -! #line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (6)].command), (yy= vsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } - break; - =20 - case 110: -! #line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_group_command ((yyvsp[(2) - (3)].command));= } - break; - =20 - case 111: -! #line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_arith_command ((yyvsp[(1) - (1)].word_list)= ); } - break; - =20 - case 112: -! #line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(2) - (3)].command); } - break; - =20 - case 113: -! #line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (4)].command), (yy= vsp[(4) - (4)].command), (COMMAND *)NULL); } - break; - =20 - case 114: -! #line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (6)].command), (yy= vsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } - break; - =20 - case 115: -! #line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (5)].command), (yy= vsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } - break; - =20 - case 117: -! #line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyvsp[(2) - (2)].pattern)->next =3D (yyvsp[(1) - (2)].pattern); (yy= val.pattern) =3D (yyvsp[(2) - (2)].pattern); } - break; - =20 - case 118: -! #line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(2) - (4)].word_list),= (yyvsp[(4) - (4)].command)); } - break; - =20 - case 119: -! #line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(2) - (4)].word_list),= (COMMAND *)NULL); } - break; - =20 - case 120: -! #line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(3) - (5)].word_list),= (yyvsp[(5) - (5)].command)); } - break; - =20 - case 121: -! #line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(3) - (5)].word_list),= (COMMAND *)NULL); } - break; - =20 - case 122: -! #line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.pattern) =3D (yyvsp[(1) - (2)].pattern); } - break; - =20 - case 123: -! #line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyvsp[(2) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yy= val.pattern) =3D (yyvsp[(2) - (3)].pattern); } - break; - =20 - case 124: -! #line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyvsp[(1) - (2)].pattern)->flags |=3D CASEPAT_FALLTHROUGH; (yyval.p= attern) =3D (yyvsp[(1) - (2)].pattern); } - break; - =20 - case 125: -! #line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyvsp[(2) - (3)].pattern)->flags |=3D CASEPAT_FALLTHROUGH; (yyvsp[(= 2) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yyval.pattern) =3D = (yyvsp[(2) - (3)].pattern); } - break; - =20 - case 126: -! #line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyvsp[(1) - (2)].pattern)->flags |=3D CASEPAT_TESTNEXT; (yyval.patt= ern) =3D (yyvsp[(1) - (2)].pattern); } - break; - =20 - case 127: -! #line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyvsp[(2) - (3)].pattern)->flags |=3D CASEPAT_TESTNEXT; (yyvsp[(2) = - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yyval.pattern) =3D (yy= vsp[(2) - (3)].pattern); } - break; - =20 - case 128: -! #line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.word_list) =3D make_word_list ((yyvsp[(1) - (1)].word), (WORD= _LIST *)NULL); } - break; - =20 - case 129: -! #line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.word_list) =3D make_word_list ((yyvsp[(3) - (3)].word), (yyvs= p[(1) - (3)].word_list)); } - break; - =20 - case 130: -! #line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D (yyvsp[(2) - (2)].command); ---- 2996,3110 ---- - =20 - case 107: -! #line 999 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (5)].command), (yy= vsp[(4) - (5)].command), (COMMAND *)NULL); } - break; - =20 - case 108: -! #line 1001 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (7)].command), (yy= vsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } - break; - =20 - case 109: -! #line 1003 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (6)].command), (yy= vsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } - break; - =20 - case 110: -! #line 1008 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D make_group_command ((yyvsp[(2) - (3)].command));= } - break; - =20 - case 111: -! #line 1012 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D make_arith_command ((yyvsp[(1) - (1)].word_list)= ); } - break; - =20 - case 112: -! #line 1016 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(2) - (3)].command); } - break; - =20 - case 113: -! #line 1020 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (4)].command), (yy= vsp[(4) - (4)].command), (COMMAND *)NULL); } - break; - =20 - case 114: -! #line 1022 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (6)].command), (yy= vsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } - break; - =20 - case 115: -! #line 1024 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (5)].command), (yy= vsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } - break; - =20 - case 117: -! #line 1029 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyvsp[(2) - (2)].pattern)->next =3D (yyvsp[(1) - (2)].pattern); (yy= val.pattern) =3D (yyvsp[(2) - (2)].pattern); } - break; - =20 - case 118: -! #line 1033 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(2) - (4)].word_list),= (yyvsp[(4) - (4)].command)); } - break; - =20 - case 119: -! #line 1035 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(2) - (4)].word_list),= (COMMAND *)NULL); } - break; - =20 - case 120: -! #line 1037 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(3) - (5)].word_list),= (yyvsp[(5) - (5)].command)); } - break; - =20 - case 121: -! #line 1039 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(3) - (5)].word_list),= (COMMAND *)NULL); } - break; - =20 - case 122: -! #line 1043 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.pattern) =3D (yyvsp[(1) - (2)].pattern); } - break; - =20 - case 123: -! #line 1045 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyvsp[(2) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yy= val.pattern) =3D (yyvsp[(2) - (3)].pattern); } - break; - =20 - case 124: -! #line 1047 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyvsp[(1) - (2)].pattern)->flags |=3D CASEPAT_FALLTHROUGH; (yyval.p= attern) =3D (yyvsp[(1) - (2)].pattern); } - break; - =20 - case 125: -! #line 1049 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyvsp[(2) - (3)].pattern)->flags |=3D CASEPAT_FALLTHROUGH; (yyvsp[(= 2) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yyval.pattern) =3D = (yyvsp[(2) - (3)].pattern); } - break; - =20 - case 126: -! #line 1051 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyvsp[(1) - (2)].pattern)->flags |=3D CASEPAT_TESTNEXT; (yyval.patt= ern) =3D (yyvsp[(1) - (2)].pattern); } - break; - =20 - case 127: -! #line 1053 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyvsp[(2) - (3)].pattern)->flags |=3D CASEPAT_TESTNEXT; (yyvsp[(2) = - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yyval.pattern) =3D (yy= vsp[(2) - (3)].pattern); } - break; - =20 - case 128: -! #line 1057 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.word_list) =3D make_word_list ((yyvsp[(1) - (1)].word), (WORD= _LIST *)NULL); } - break; - =20 - case 129: -! #line 1059 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.word_list) =3D make_word_list ((yyvsp[(3) - (3)].word), (yyvs= p[(1) - (3)].word_list)); } - break; - =20 - case 130: -! #line 1068 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D (yyvsp[(2) - (2)].command); -*************** -*** 3115,3119 **** - =20 - case 132: -! #line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D (yyvsp[(2) - (2)].command); ---- 3115,3119 ---- - =20 - case 132: -! #line 1077 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D (yyvsp[(2) - (2)].command); -*************** -*** 3122,3126 **** - =20 - case 134: -! #line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - if ((yyvsp[(1) - (3)].command)->type =3D=3D cm_connection) ---- 3122,3126 ---- - =20 - case 134: -! #line 1084 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - if ((yyvsp[(1) - (3)].command)->type =3D=3D cm_connection) -*************** -*** 3132,3146 **** - =20 - case 136: -! #line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), AND_AND); } - break; - =20 - case 137: -! #line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), OR_OR); } - break; - =20 - case 138: -! #line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - if ((yyvsp[(1) - (4)].command)->type =3D=3D cm_connection) ---- 3132,3146 ---- - =20 - case 136: -! #line 1095 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), AND_AND); } - break; - =20 - case 137: -! #line 1097 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), OR_OR); } - break; - =20 - case 138: -! #line 1099 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - if ((yyvsp[(1) - (4)].command)->type =3D=3D cm_connection) -*************** -*** 3152,3186 **** - =20 - case 139: -! #line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), ';'); } - break; - =20 - case 140: -! #line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), ';'); } - break; - =20 - case 141: -! #line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 144: -! #line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.number) =3D '\n'; } - break; - =20 - case 145: -! #line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.number) =3D ';'; } - break; - =20 - case 146: -! #line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.number) =3D yacc_EOF; } - break; - =20 - case 149: -! #line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D (yyvsp[(1) - (1)].command); ---- 3152,3186 ---- - =20 - case 139: -! #line 1106 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), ';'); } - break; - =20 - case 140: -! #line 1108 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), ';'); } - break; - =20 - case 141: -! #line 1110 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 144: -! #line 1118 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.number) =3D '\n'; } - break; - =20 - case 145: -! #line 1120 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.number) =3D ';'; } - break; - =20 - case 146: -! #line 1122 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.number) =3D yacc_EOF; } - break; - =20 - case 149: -! #line 1136 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D (yyvsp[(1) - (1)].command); -*************** -*** 3198,3202 **** - =20 - case 150: -! #line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - if ((yyvsp[(1) - (2)].command)->type =3D=3D cm_connection) ---- 3198,3202 ---- - =20 - case 150: -! #line 1149 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - if ((yyvsp[(1) - (2)].command)->type =3D=3D cm_connection) -*************** -*** 3217,3221 **** - =20 - case 151: -! #line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - (yyval.command) =3D (yyvsp[(1) - (2)].command); ---- 3217,3221 ---- - =20 - case 151: -! #line 1165 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - (yyval.command) =3D (yyvsp[(1) - (2)].command); -*************** -*** 3233,3247 **** - =20 - case 152: -! #line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), AND_AND); } - break; - =20 - case 153: -! #line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), OR_OR); } - break; - =20 - case 154: -! #line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - if ((yyvsp[(1) - (3)].command)->type =3D=3D cm_connection) ---- 3233,3247 ---- - =20 - case 152: -! #line 1180 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), AND_AND); } - break; - =20 - case 153: -! #line 1182 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), OR_OR); } - break; - =20 - case 154: -! #line 1184 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - if ((yyvsp[(1) - (3)].command)->type =3D=3D cm_connection) -*************** -*** 3253,3272 **** - =20 - case 155: -! #line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (3)].command), (yy= vsp[(3) - (3)].command), ';'); } - break; - =20 - case 156: -! #line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 157: -! #line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 158: -! #line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - if ((yyvsp[(2) - (2)].command)) ---- 3253,3272 ---- - =20 - case 155: -! #line 1191 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (3)].command), (yy= vsp[(3) - (3)].command), ';'); } - break; - =20 - case 156: -! #line 1194 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 157: -! #line 1198 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 158: -! #line 1200 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - if ((yyvsp[(2) - (2)].command)) -*************** -*** 3277,3281 **** - =20 - case 159: -! #line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - if ((yyvsp[(2) - (2)].command)) ---- 3277,3281 ---- - =20 - case 159: -! #line 1206 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - if ((yyvsp[(2) - (2)].command)) -*************** -*** 3286,3290 **** - =20 - case 160: -! #line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - ELEMENT x; ---- 3286,3290 ---- - =20 - case 160: -! #line 1212 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - ELEMENT x; -*************** -*** 3306,3310 **** - =20 - case 161: -! #line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - ELEMENT x; ---- 3306,3310 ---- - =20 - case 161: -! #line 1229 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - ELEMENT x; -*************** -*** 3327,3336 **** - =20 - case 162: -! #line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), '|'); } - break; - =20 - case 163: -! #line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { - /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ ---- 3327,3336 ---- - =20 - case 162: -! #line 1249 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (yy= vsp[(4) - (4)].command), '|'); } - break; - =20 - case 163: -! #line 1251 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { - /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ -*************** -*** 3358,3377 **** - =20 - case 164: -! #line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 165: -! #line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.number) =3D CMD_TIME_PIPELINE; } - break; - =20 - case 166: -! #line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.number) =3D CMD_TIME_PIPELINE|CMD_TIME_POSIX; } - break; - =20 - case 167: -! #line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - { (yyval.number) =3D CMD_TIME_PIPELINE|CMD_TIME_POSIX; } - break; ---- 3358,3377 ---- - =20 - case 164: -! #line 1274 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } - break; - =20 - case 165: -! #line 1278 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.number) =3D CMD_TIME_PIPELINE; } - break; - =20 - case 166: -! #line 1280 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.number) =3D CMD_TIME_PIPELINE|CMD_TIME_POSIX; } - break; - =20 - case 167: -! #line 1282 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.number) =3D CMD_TIME_PIPELINE|CMD_TIME_POSIX; } - break; -*************** -*** 3593,3597 **** - =20 - =20 -! #line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" - =20 - =20 ---- 3593,3597 ---- - =20 - =20 -! #line 1284 "/usr/src/local/bash/bash-4.3-patched/parse.y" - =20 - =20 -*************** -*** 4851,4854 **** ---- 4851,4864 ---- - } - =20 -+ char * -+ parser_remaining_input () -+ { -+ if (shell_input_line =3D=3D 0) -+ return 0; -+ if (shell_input_line_index < 0 || shell_input_line_index >=3D shell_inpu= t_line_len) -+ return '\0'; /* XXX */ -+ return (shell_input_line + shell_input_line_index); -+ } -+=20 - #ifdef INCLUDE_UNUSED - /* Back the input pointer up by one, effectively `ungetting' a character. = */ -*************** -*** 6340,6345 **** - /* reset_parser clears shell_input_line and associated variables */ - restore_input_line_state (&ls); -! if (interactive) -! token_to_read =3D 0; - =20 - /* Need to find how many characters parse_and_execute consumed, update ---- 6350,6355 ---- - /* reset_parser clears shell_input_line and associated variables */ - restore_input_line_state (&ls); -!=20 -! token_to_read =3D 0; - =20 - /* Need to find how many characters parse_and_execute consumed, update -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 29 - =20 - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - =20 -! #define PATCHLEVEL 30 - =20 - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-001 b/src/patches/bash/bash50-001 new file mode 100644 index 000000000..169317ded --- /dev/null +++ b/src/patches/bash/bash50-001 @@ -0,0 +1,166 @@ + BASH PATCH REPORT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Bash-Release: 5.0 +Patch-ID: bash50-001 + +Bug-Reported-by: axel(a)freakout.de +Bug-Reference-ID: <201901082050.x08KoShS006731(a)bongo.freakout.de> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-01/msg000= 79.html + +Bug-Description: + +Under certain circumstances, the glob expansion code did not remove +backslashes escaping characters in directory names (or portions of a +pattern preceding a slash). + +Patch (apply with `patch -p0'): + +*** ../bash-5.0/bashline.c 2018-11-27 13:20:16.000000000 -0500 +--- bashline.c 2019-01-16 16:06:03.000000000 -0500 +*************** +*** 232,235 **** +--- 232,236 ---- + static int bash_possible_command_completions __P((int, int)); + =20 ++ static int completion_glob_pattern __P((char *)); + static char *glob_complete_word __P((const char *, int)); + static int bash_glob_completion_internal __P((int)); +*************** +*** 1742,1746 **** + /* This could be a globbing pattern, so try to expand it using pathname + expansion. */ +! if (!matches && glob_pattern_p (text)) + { + matches =3D rl_completion_matches (text, glob_complete_word); +--- 1743,1747 ---- + /* This could be a globbing pattern, so try to expand it using pathname + expansion. */ +! if (!matches && completion_glob_pattern ((char *)text)) + { + matches =3D rl_completion_matches (text, glob_complete_word); +*************** +*** 1851,1855 **** + } + =20 +! globpat =3D glob_pattern_p (hint_text); + =20 + /* If this is an absolute program name, do not check it against +--- 1852,1856 ---- + } + =20 +! globpat =3D completion_glob_pattern ((char *)hint_text); + =20 + /* If this is an absolute program name, do not check it against +*************** +*** 3714,3717 **** +--- 3715,3773 ---- + } + =20 ++ static int ++ completion_glob_pattern (string) ++ char *string; ++ { ++ register int c; ++ char *send; ++ int open; ++=20 ++ DECLARE_MBSTATE; ++=20 ++ open =3D 0; ++ send =3D string + strlen (string); ++=20 ++ while (c =3D *string++) ++ { ++ switch (c) ++ { ++ case '?': ++ case '*': ++ return (1); ++=20 ++ case '[': ++ open++; ++ continue; ++=20 ++ case ']': ++ if (open) ++ return (1); ++ continue; ++=20 ++ case '+': ++ case '@': ++ case '!': ++ if (*string =3D=3D '(') /*)*/ ++ return (1); ++ continue; ++=20 ++ case '\\': ++ if (*string =3D=3D 0) ++ return (0); =20 ++ } ++=20 ++ /* Advance one fewer byte than an entire multibyte character to ++ account for the auto-increment in the loop above. */ ++ #ifdef HANDLE_MULTIBYTE ++ string--; ++ ADVANCE_CHAR_P (string, send - string); ++ string++; ++ #else ++ ADVANCE_CHAR_P (string, send - string); ++ #endif ++ } ++ return (0); ++ } ++=20 + static char *globtext; + static char *globorig; +*************** +*** 3878,3882 **** + } =20 + =20 +! if (t && glob_pattern_p (t) =3D=3D 0) + rl_explicit_arg =3D 1; /* XXX - force glob_complete_word to append `*'= */ + FREE (t); +--- 3934,3938 ---- + } =20 + =20 +! if (t && completion_glob_pattern (t) =3D=3D 0) + rl_explicit_arg =3D 1; /* XXX - force glob_complete_word to append `*'= */ + FREE (t); +*** ../bash-5.0/lib/glob/glob_loop.c 2018-12-31 13:35:15.000000000 -0500 +--- lib/glob/glob_loop.c 2019-01-09 09:44:36.000000000 -0500 +*************** +*** 55,59 **** + =20 + case L('\\'): +- #if 0 + /* Don't let the pattern end in a backslash (GMATCH returns no match + if the pattern ends in a backslash anyway), but otherwise return 1, +--- 55,58 ---- +*************** +*** 61,69 **** + and it can be removed. */ + return (*p !=3D L('\0')); +- #else +- /* The pattern may not end with a backslash. */ +- if (*p++ =3D=3D L('\0')) +- return 0; +- #endif + } + =20 +--- 60,63 ---- +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 0 + =20 + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 1 + =20 + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-002 b/src/patches/bash/bash50-002 new file mode 100644 index 000000000..3fc8272f8 --- /dev/null +++ b/src/patches/bash/bash50-002 @@ -0,0 +1,113 @@ + BASH PATCH REPORT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Bash-Release: 5.0 +Patch-ID: bash50-002 + +Bug-Reported-by: Ante Peric +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-01/msg000= 95.html + +Bug-Description: + +When an alias value ends with an unquoted literal tab (not part of a quoted +string or comment), alias expansion cannot correctly detect the end of the +alias value after expanding it. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0/parser.h 2018-12-28 19:11:18.000000000 -0500 +--- parser.h 2019-01-11 15:13:03.000000000 -0500 +*************** +*** 48,51 **** +--- 48,52 ---- + #define PST_REDIRLIST 0x080000 /* parsing a list of redirections preceding= a simple command name */ + #define PST_COMMENT 0x100000 /* parsing a shell comment; used by aliases */ ++ #define PST_ENDALIAS 0x200000 /* just finished expanding and consuming an = alias */ + =20 + /* Definition of the delimiter stack. Needed by parse.y and bashhist.c. */ +*** ../bash-5.0/parse.y 2019-01-02 13:57:34.000000000 -0500 +--- parse.y 2019-01-14 08:23:31.000000000 -0500 +*************** +*** 2558,2567 **** + pushed_string_list->flags !=3D PSH_DPAREN && + (parser_state & PST_COMMENT) =3D=3D 0 && + shell_input_line_index > 0 && +! shell_input_line[shell_input_line_index-1] !=3D ' ' && + shell_input_line[shell_input_line_index-1] !=3D '\n' && + shellmeta (shell_input_line[shell_input_line_index-1]) =3D=3D 0 && + (current_delimiter (dstack) !=3D '\'' && current_delimiter (dstack) = !=3D '"')) + { + return ' '; /* END_ALIAS */ + } +--- 2558,2569 ---- + pushed_string_list->flags !=3D PSH_DPAREN && + (parser_state & PST_COMMENT) =3D=3D 0 && ++ (parser_state & PST_ENDALIAS) =3D=3D 0 && /* only once */ + shell_input_line_index > 0 && +! shellblank (shell_input_line[shell_input_line_index-1]) =3D=3D 0 && + shell_input_line[shell_input_line_index-1] !=3D '\n' && + shellmeta (shell_input_line[shell_input_line_index-1]) =3D=3D 0 && + (current_delimiter (dstack) !=3D '\'' && current_delimiter (dstack) = !=3D '"')) + { ++ parser_state |=3D PST_ENDALIAS; + return ' '; /* END_ALIAS */ + } +*************** +*** 2572,2575 **** +--- 2574,2578 ---- + if (uc =3D=3D 0 && pushed_string_list && pushed_string_list->flags !=3D = PSH_SOURCE) + { ++ parser_state &=3D ~PST_ENDALIAS; + pop_string (); + uc =3D shell_input_line[shell_input_line_index]; +*** ../bash-5.0/y.tab.c 2019-01-02 13:57:43.000000000 -0500 +--- y.tab.c 2019-01-14 08:39:23.000000000 -0500 +*************** +*** 4874,4883 **** + pushed_string_list->flags !=3D PSH_DPAREN && + (parser_state & PST_COMMENT) =3D=3D 0 && + shell_input_line_index > 0 && +! shell_input_line[shell_input_line_index-1] !=3D ' ' && + shell_input_line[shell_input_line_index-1] !=3D '\n' && + shellmeta (shell_input_line[shell_input_line_index-1]) =3D=3D 0 && + (current_delimiter (dstack) !=3D '\'' && current_delimiter (dstack) = !=3D '"')) + { + return ' '; /* END_ALIAS */ + } +--- 4874,4885 ---- + pushed_string_list->flags !=3D PSH_DPAREN && + (parser_state & PST_COMMENT) =3D=3D 0 && ++ (parser_state & PST_ENDALIAS) =3D=3D 0 && /* only once */ + shell_input_line_index > 0 && +! shellblank (shell_input_line[shell_input_line_index-1]) =3D=3D 0 && + shell_input_line[shell_input_line_index-1] !=3D '\n' && + shellmeta (shell_input_line[shell_input_line_index-1]) =3D=3D 0 && + (current_delimiter (dstack) !=3D '\'' && current_delimiter (dstack) = !=3D '"')) + { ++ parser_state |=3D PST_ENDALIAS; + return ' '; /* END_ALIAS */ + } +*************** +*** 4888,4891 **** +--- 4890,4894 ---- + if (uc =3D=3D 0 && pushed_string_list && pushed_string_list->flags !=3D = PSH_SOURCE) + { ++ parser_state &=3D ~PST_ENDALIAS; + pop_string (); + uc =3D shell_input_line[shell_input_line_index]; +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 1 + =20 + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 2 + =20 + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-003 b/src/patches/bash/bash50-003 new file mode 100644 index 000000000..f7e5677e5 --- /dev/null +++ b/src/patches/bash/bash50-003 @@ -0,0 +1,239 @@ + BASH PATCH REPORT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Bash-Release: 5.0 +Patch-ID: bash50-003 + +Bug-Reported-by: Andrew Church +Bug-Reference-ID: <5c534aa2.04371(a)msgid.achurch.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-01/msg002= 76.html + +Bug-Description: + +There are several incompatibilities in how bash-5.0 processes pathname +expansion (globbing) of filename arguments that have backslashes in the +directory portion. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/lib/glob/glob_loop.c 2019-01-16 16:13:21.000000000 -= 0500 +--- lib/glob/glob_loop.c 2019-02-01 09:45:11.000000000 -0500 +*************** +*** 27,34 **** + register const GCHAR *p; + register GCHAR c; +! int bopen; + =20 + p =3D pattern; +! bopen =3D 0; + =20 + while ((c =3D *p++) !=3D L('\0')) +--- 27,34 ---- + register const GCHAR *p; + register GCHAR c; +! int bopen, bsquote; + =20 + p =3D pattern; +! bopen =3D bsquote =3D 0; + =20 + while ((c =3D *p++) !=3D L('\0')) +*************** +*** 56,66 **** + case L('\\'): + /* Don't let the pattern end in a backslash (GMATCH returns no match +! if the pattern ends in a backslash anyway), but otherwise return 1, +! since the matching engine uses backslash as an escape character +! and it can be removed. */ +! return (*p !=3D L('\0')); + } + =20 +! return 0; + } + =20 +--- 56,75 ---- + case L('\\'): + /* Don't let the pattern end in a backslash (GMATCH returns no match +! if the pattern ends in a backslash anyway), but otherwise note that=20 +! we have seen this, since the matching engine uses backslash as an +! escape character and it can be removed. We return 2 later if we +! have seen only backslash-escaped characters, so interested callers +! know they can shortcut and just dequote the pathname. */ +! if (*p !=3D L('\0')) +! { +! p++; +! bsquote =3D 1; +! continue; +! } +! else /* (*p =3D=3D L('\0')) */ +! return 0; + } + =20 +! return bsquote ? 2 : 0; + } + =20 +*** ../bash-5.0-patched/lib/glob/glob.h 2013-10-28 14:46:12.000000000 -0400 +--- lib/glob/glob.h 2019-03-07 11:06:47.000000000 -0500 +*************** +*** 31,34 **** +--- 31,35 ---- + #define GX_ADDCURDIR 0x200 /* internal -- add passed directory name */ + #define GX_GLOBSTAR 0x400 /* turn on special handling of ** */ ++ #define GX_RECURSE 0x800 /* internal -- glob_filename called recursively */ + =20 + extern int glob_pattern_p __P((const char *)); +*** ../bash-5.0-patched/lib/glob/glob.c 2018-09-20 10:53:23.000000000 -0400 +--- lib/glob/glob.c 2019-03-07 14:23:43.000000000 -0500 +*************** +*** 1062,1066 **** + unsigned int directory_len; + int free_dirname; /* flag */ +! int dflags; + =20 + result =3D (char **) malloc (sizeof (char *)); +--- 1078,1082 ---- + unsigned int directory_len; + int free_dirname; /* flag */ +! int dflags, hasglob; + =20 + result =3D (char **) malloc (sizeof (char *)); +*************** +*** 1111,1117 **** + } + =20 + /* If directory_name contains globbing characters, then we +! have to expand the previous levels. Just recurse. */ +! if (directory_len > 0 && glob_pattern_p (directory_name)) + { + char **directories, *d, *p; +--- 1127,1136 ---- + } + =20 ++ hasglob =3D 0; + /* If directory_name contains globbing characters, then we +! have to expand the previous levels. Just recurse. +! If glob_pattern_p returns !=3D [0,1] we have a pattern that has backs= lash +! quotes but no unquoted glob pattern characters. We dequote it below. = */ +! if (directory_len > 0 && (hasglob =3D glob_pattern_p (directory_name)) = =3D=3D 1) + { + char **directories, *d, *p; +*************** +*** 1176,1180 **** + d[directory_len - 1] =3D '\0'; + =20 +! directories =3D glob_filename (d, dflags); + =20 + if (free_dirname) +--- 1195,1199 ---- + d[directory_len - 1] =3D '\0'; + =20 +! directories =3D glob_filename (d, dflags|GX_RECURSE); + =20 + if (free_dirname) +*************** +*** 1333,1336 **** +--- 1352,1369 ---- + return (NULL); + } ++ /* If we have a directory name with quoted characters, and we are ++ being called recursively to glob the directory portion of a pathname, ++ we need to dequote the directory name before returning it so the ++ caller can read the directory */ ++ if (directory_len > 0 && hasglob =3D=3D 2 && (flags & GX_RECURSE) != =3D 0) ++ { ++ dequote_pathname (directory_name); ++ directory_len =3D strlen (directory_name); ++ } ++=20 ++ /* We could check whether or not the dequoted directory_name is a ++ directory and return it here, returning the original directory_name ++ if not, but we don't do that yet. I'm not sure it matters. */ ++=20 + /* Handle GX_MARKDIRS here. */ + result[0] =3D (char *) malloc (directory_len + 1); +*** ../bash-5.0-patched/pathexp.c 2018-04-29 17:44:48.000000000 -0400 +--- pathexp.c 2019-01-31 20:19:41.000000000 -0500 +*************** +*** 66,74 **** + register int c; + char *send; +! int open; + =20 + DECLARE_MBSTATE; + =20 +! open =3D 0; + send =3D string + strlen (string); + =20 +--- 66,74 ---- + register int c; + char *send; +! int open, bsquote; + =20 + DECLARE_MBSTATE; + =20 +! open =3D bsquote =3D 0; + send =3D string + strlen (string); + =20 +*************** +*** 101,105 **** + globbing. */ + case '\\': +! return (*string !=3D 0); + =20 + case CTLESC: +--- 101,112 ---- + globbing. */ + case '\\': +! if (*string !=3D '\0' && *string !=3D '/') +! { +! bsquote =3D 1; +! string++; +! continue; +! } +! else if (*string =3D=3D 0) +! return (0); + =20 + case CTLESC: +*************** +*** 118,122 **** + #endif + } +! return (0); + } + =20 +--- 125,130 ---- + #endif + } +!=20 +! return (bsquote ? 2 : 0); + } + =20 +*** ../bash-5.0-patched/bashline.c 2019-01-16 16:13:21.000000000 -0500 +--- bashline.c 2019-02-22 09:29:08.000000000 -0500 +*************** +*** 3753,3757 **** + =20 + case '\\': +! if (*string =3D=3D 0) + return (0); =20 + } +--- 3766,3770 ---- + =20 + case '\\': +! if (*string++ =3D=3D 0) + return (0); =20 + } +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 2 + =20 + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 3 + =20 + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-004 b/src/patches/bash/bash50-004 new file mode 100644 index 000000000..fe3c764bd --- /dev/null +++ b/src/patches/bash/bash50-004 @@ -0,0 +1,53 @@ + BASH PATCH REPORT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Bash-Release: 5.0 +Patch-ID: bash50-004 + +Bug-Reported-by: Daniel Kahn Gillmor +Bug-Reference-ID: <87lg0g8aiw.fsf(a)fifthhorseman.net> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-04/msg000= 76.html + +Bug-Description: + +In bash-5.0, the `wait' builtin without arguments waits for all children of = the +shell. This includes children it `inherited' at shell invocation time. This +patch modifies the behavior to not wait for these inherited children, some +of which might be long-lived. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/jobs.c 2018-12-06 11:44:34.000000000 -0500 +--- jobs.c 2019-04-12 15:15:10.000000000 -0400 +*************** +*** 2489,2496 **** + wait_procsubs (); + reap_procsubs (); +! #if 1 + /* We don't want to wait indefinitely if we have stopped children. */ +- /* XXX - should add a loop that goes through the list of process +- substitutions and waits for each proc in turn before this code. */ + if (any_stopped =3D=3D 0) + { +--- 2490,2495 ---- + wait_procsubs (); + reap_procsubs (); +! #if 0 + /* We don't want to wait indefinitely if we have stopped children. */ + if (any_stopped =3D=3D 0) + { +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 3 + =20 + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 4 + =20 + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-005 b/src/patches/bash/bash50-005 new file mode 100644 index 000000000..9b1cd75b0 --- /dev/null +++ b/src/patches/bash/bash50-005 @@ -0,0 +1,110 @@ + BASH PATCH REPORT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Bash-Release: 5.0 +Patch-ID: bash50-005 + +Bug-Reported-by: Brad Spencer +Bug-Reference-ID: <1b993ff2-ce4f-662a-6be4-393457362e47(a)blackberry.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-01/msg002= 50.html + +Bug-Description: + +In certain cases, bash optimizes out a fork() call too early and prevents +traps from running. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/command.h 2018-07-20 21:16:31.000000000 -0400 +--- command.h 2019-02-20 11:09:36.000000000 -0500 +*************** +*** 187,190 **** +--- 188,192 ---- + #define CMD_LASTPIPE 0x2000 + #define CMD_STDPATH 0x4000 /* use standard path for command lookup */ ++ #define CMD_TRY_OPTIMIZING 0x8000 /* try to optimize this simple command = */ + =20 + /* What a command looks like. */ +*** ../bash-5.0-patched/builtins/evalstring.c 2018-12-26 11:19:21.000000000 = -0500 +--- builtins/evalstring.c 2019-01-29 14:15:19.000000000 -0500 +*************** +*** 101,104 **** +--- 101,113 ---- + } + =20 ++ int ++ can_optimize_connection (command) ++ COMMAND *command; ++ { ++ return (*bash_input.location.string =3D=3D '\0' && ++ (command->value.Connection->connector =3D=3D AND_AND || command->value.= Connection->connector =3D=3D OR_OR || command->value.Connection->connector = =3D=3D ';') && ++ command->value.Connection->second->type =3D=3D cm_simple); ++ } ++=20 + void + optimize_fork (command) +*************** +*** 106,110 **** + { + if (command->type =3D=3D cm_connection && +! (command->value.Connection->connector =3D=3D AND_AND || command->val= ue.Connection->connector =3D=3D OR_OR) && + should_suppress_fork (command->value.Connection->second)) + { +--- 115,120 ---- + { + if (command->type =3D=3D cm_connection && +! (command->value.Connection->connector =3D=3D AND_AND || command->val= ue.Connection->connector =3D=3D OR_OR || command->value.Connection->connector= =3D=3D ';') && +! (command->value.Connection->second->flags & CMD_TRY_OPTIMIZING) && + should_suppress_fork (command->value.Connection->second)) + { +*************** +*** 413,418 **** + command->value.Simple->flags |=3D CMD_NO_FORK; + } +! else if (command->type =3D=3D cm_connection) +! optimize_fork (command); + #endif /* ONESHOT */ + =20 +--- 423,438 ---- + command->value.Simple->flags |=3D CMD_NO_FORK; + } +!=20 +! /* Can't optimize forks out here execept for simple commands. +! This knows that the parser sets up commands as left-side heavy +! (&& and || are left-associative) and after the single parse, +! if we are at the end of the command string, the last in a +! series of connection commands is +! command->value.Connection->second. */ +! else if (command->type =3D=3D cm_connection && can_optimize_connect= ion (command)) +! { +! command->value.Connection->second->flags |=3D CMD_TRY_OPTIMIZING; +! command->value.Connection->second->value.Simple->flags |=3D CMD_TRY_OP= TIMIZING; +! } + #endif /* ONESHOT */ + =20 +*** ../bash-5.0-patched/execute_cmd.c 2018-12-05 09:05:14.000000000 -0500 +--- execute_cmd.c 2019-01-25 15:59:00.000000000 -0500 +*************** +*** 2768,2771 **** +--- 2768,2773 ---- + (exec_result !=3D EXECUTION_SUCCESS))) + { ++ optimize_fork (command); ++=20 + second =3D command->value.Connection->second; + if (ignore_return && second) +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 4 + =20 + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 5 + =20 + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-006 b/src/patches/bash/bash50-006 new file mode 100644 index 000000000..2ad1cd200 --- /dev/null +++ b/src/patches/bash/bash50-006 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Bash-Release: 5.0 +Patch-ID: bash50-006 + +Bug-Reported-by: Tomas Mozes +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-03/msg000= 37.html + +Bug-Description: + +Bash-5.0 did not build successfully if SYSLOG_HISTORY was defined without +also defining SYSLOG_SHOPT. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/builtins/shopt.def 2018-10-05 14:49:02.000000000 -04= 00 +--- builtins/shopt.def 2019-01-23 09:55:22.000000000 -0500 +*************** +*** 123,127 **** + #endif + =20 +! #if defined (SYSLOG_HISTORY) && defined (SYSLOG_SHOPT) + extern int syslog_history; + #endif +--- 123,127 ---- + #endif + =20 +! #if defined (SYSLOG_HISTORY) + extern int syslog_history; + #endif +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 5 + =20 + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 6 + =20 + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-007 b/src/patches/bash/bash50-007 new file mode 100644 index 000000000..b9eb4150a --- /dev/null +++ b/src/patches/bash/bash50-007 @@ -0,0 +1,62 @@ + BASH PATCH REPORT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Bash-Release: 5.0 +Patch-ID: bash50-007 + +Bug-Reported-by: Grisha Levit +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-02/msg000= 67.html + +Bug-Description: + +Running `exec' when job control was disabled, even temporarily, but after it +had been initialized, could leave the terminal in the wrong process group for +the executed process. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/jobs.c 2018-12-06 11:44:34.000000000 -0500 +--- jobs.c 2019-04-12 15:15:10.000000000 -0400 +*************** +*** 4838,4850 **** + { + if (job_control) +! { +! terminate_stopped_jobs (); + =20 +! if (original_pgrp >=3D 0) +! give_terminal_to (original_pgrp, 1); +! } + =20 +! if (original_pgrp >=3D 0) +! setpgid (0, original_pgrp); + } + =20 +--- 4838,4848 ---- + { + if (job_control) +! terminate_stopped_jobs (); + =20 +! if (original_pgrp >=3D 0 && terminal_pgrp !=3D original_pgrp) +! give_terminal_to (original_pgrp, 1); + =20 +! if (original_pgrp >=3D 0 && setpgid (0, original_pgrp) =3D=3D 0) +! shell_pgrp =3D original_pgrp; + } + =20 +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 6 + =20 + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 7 + =20 + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-008 b/src/patches/bash/bash50-008 new file mode 100644 index 000000000..b09d6b33a --- /dev/null +++ b/src/patches/bash/bash50-008 @@ -0,0 +1,68 @@ + BASH PATCH REPORT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Bash-Release: 5.0 +Patch-ID: bash50-008 + +Bug-Reported-by: Michael Albinus +Bug-Reference-ID: <87bm36k3kz.fsf(a)gmx.de> +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2019-02/msg00= 111.html + +Bug-Description: + +When HISTSIZE is set to 0, history expansion can leave the history length +set to an incorrect value, leading to subsequent attempts to access invalid +memory. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/bashhist.c 2018-07-05 22:41:14.000000000 -0400 +--- bashhist.c 2019-02-20 16:20:04.000000000 -0500 +*************** +*** 561,573 **** + if (!history_expansion_inhibited && history_expansion && history_expansi= on_p (line)) + { + /* If we are expanding the second or later line of a multi-line + command, decrease history_length so references to history expansions + in these lines refer to the previous history entry and not the + current command. */ + if (history_length > 0 && command_oriented_history && current_comman= d_first_line_saved && current_command_line_count > 1) + history_length--; + expanded =3D history_expand (line, &history_value); + if (history_length >=3D 0 && command_oriented_history && current_com= mand_first_line_saved && current_command_line_count > 1) +! history_length++; + =20 + if (expanded) +--- 561,576 ---- + if (!history_expansion_inhibited && history_expansion && history_expansi= on_p (line)) + { ++ int old_len; ++=20 + /* If we are expanding the second or later line of a multi-line + command, decrease history_length so references to history expansions + in these lines refer to the previous history entry and not the + current command. */ ++ old_len =3D history_length; + if (history_length > 0 && command_oriented_history && current_comman= d_first_line_saved && current_command_line_count > 1) + history_length--; + expanded =3D history_expand (line, &history_value); + if (history_length >=3D 0 && command_oriented_history && current_com= mand_first_line_saved && current_command_line_count > 1) +! history_length =3D old_len; + =20 + if (expanded) + +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 7 + =20 + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 8 + =20 + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-009 b/src/patches/bash/bash50-009 new file mode 100644 index 000000000..aef4ce7b5 --- /dev/null +++ b/src/patches/bash/bash50-009 @@ -0,0 +1,42 @@ + BASH PATCH REPORT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Bash-Release: 5.0 +Patch-ID: bash50-009 + +Bug-Reported-by: chet.ramey(a)case.edu +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +The history file reading code doesn't close the file descriptor open to +the history file when it encounters a zero-length file. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/lib/readline/histfile.c 2018-06-11 09:14:52.00000000= 0 -0400 +--- lib/readline/histfile.c 2019-05-16 15:55:57.000000000 -0400 +*************** +*** 306,309 **** +--- 312,316 ---- + { + free (input); ++ close (file); + return 0; /* don't waste time if we don't have to */ + } +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 8 + =20 + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 9 + =20 + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-010 b/src/patches/bash/bash50-010 new file mode 100644 index 000000000..bac7aa925 --- /dev/null +++ b/src/patches/bash/bash50-010 @@ -0,0 +1,172 @@ + BASH PATCH REPORT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Bash-Release: 5.0 +Patch-ID: bash50-010 + +Bug-Reported-by: Thorsten Glaser +Bug-Reference-ID: <156622962831.19438.16374961114836556294.reportbug(a)tglas= e.lan.tarent.de> +Bug-Reference-URL: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D935115 + +Bug-Description: + +Bash-5.0 changed the way assignment statements preceding special builtins +and shell functions were handled in posix mode. They automatically created +or modified global variables instead of modifying existing local variables +as in bash-4.4. + +The bash-4.4 posix-mode semantics were buggy, and resulted in creating +local variables where they were not intended and modifying global variables +and local variables simultaneously. + +The bash-5.0 changes were intended to fix this issue, but did not preserve +enough backwards compatibility. The posix standard also changed what it +required in these cases, so bash-5.0 is not bound by the strict conformance +requirements that existed in previous issues of the standard. + +This patch modifies the bash-5.0 posix mode behavior in an effort to restore +some backwards compatibility and rationalize the behavior in the presence of +local variables. It + +1. Changes the assignment semantics to be more similar to standalone assignm= ent + statements: assignments preceding a function call or special builtin while + executing in a shell function will modify the value of a local variable + with the same name for the duration of the function's execution; + +2. Changes assignments preceding shell function calls or special builtins + from within a shell function to no longer create or modify global variabl= es + in the presence of a local variable with the same name; + +3. Assignment statements preceding a shell function call or special builtin + at the global scope continue to modify the (global) calling environment, + but are unaffected by assignments preceding function calls or special + builtins within a function, as described in item 2. This is also similar + to the behavior of a standalone assignment statement. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/variables.c 2018-12-18 11:07:21.000000000 -0500 +--- variables.c 2019-08-22 10:53:44.000000000 -0400 +*************** +*** 4461,4467 **** + =20 + /* Take a variable from an assignment statement preceding a posix special +! builtin (including `return') and create a global variable from it. This +! is called from merge_temporary_env, which is only called when in posix +! mode. */ + static void + push_posix_temp_var (data) +--- 4461,4467 ---- + =20 + /* Take a variable from an assignment statement preceding a posix special +! builtin (including `return') and create a variable from it as if a +! standalone assignment statement had been performed. This is called from +! merge_temporary_env, which is only called when in posix mode. */ + static void + push_posix_temp_var (data) +*************** +*** 4473,4486 **** + var =3D (SHELL_VAR *)data; + =20 +! binding_table =3D global_variables->table; +! if (binding_table =3D=3D 0) +! binding_table =3D global_variables->table =3D hash_create (VARIABLES_H= ASH_BUCKETS); +!=20 +! v =3D bind_variable_internal (var->name, value_cell (var), binding_table= , 0, ASS_FORCE|ASS_NOLONGJMP); + =20 + /* global variables are no longer temporary and don't need propagating. = */ +! var->attributes &=3D ~(att_tempvar|att_propagate); + if (v) +! v->attributes |=3D var->attributes; + =20 + if (find_special_var (var->name) >=3D 0) +--- 4473,4497 ---- + var =3D (SHELL_VAR *)data; + =20 +! /* Just like do_assignment_internal(). This makes assignments preceding +! special builtins act like standalone assignment statements when in +! posix mode, satisfying the posix requirement that this affect the +! "current execution environment." */ +! v =3D bind_variable (var->name, value_cell (var), ASS_FORCE|ASS_NOLONGJM= P); +!=20 +! /* If this modifies an existing local variable, v->context will be non-z= ero. +! If it comes back with v->context =3D=3D 0, we bound at the global con= text. +! Set binding_table appropriately. It doesn't matter whether it's corre= ct +! if the variable is local, only that it's not global_variables->table = */ +! binding_table =3D v->context ? shell_variables->table : global_variables= ->table; + =20 + /* global variables are no longer temporary and don't need propagating. = */ +! if (binding_table =3D=3D global_variables->table) +! var->attributes &=3D ~(att_tempvar|att_propagate); +!=20 + if (v) +! { +! v->attributes |=3D var->attributes; +! v->attributes &=3D ~att_tempvar; /* not a temp var now */ +! } + =20 + if (find_special_var (var->name) >=3D 0) +*************** +*** 4576,4587 **** + { + int i; + =20 + tempvar_list =3D strvec_create (HASH_ENTRIES (temporary_env) + 1); + tempvar_list[tvlist_ind =3D 0] =3D 0; +! =20 +! hash_flush (temporary_env, pushf); +! hash_dispose (temporary_env); + temporary_env =3D (HASH_TABLE *)NULL; + =20 + tempvar_list[tvlist_ind] =3D 0; + =20 +--- 4587,4601 ---- + { + int i; ++ HASH_TABLE *disposer; + =20 + tempvar_list =3D strvec_create (HASH_ENTRIES (temporary_env) + 1); + tempvar_list[tvlist_ind =3D 0] =3D 0; +!=20 +! disposer =3D temporary_env; + temporary_env =3D (HASH_TABLE *)NULL; + =20 ++ hash_flush (disposer, pushf); ++ hash_dispose (disposer); ++=20 + tempvar_list[tvlist_ind] =3D 0; + =20 +*** ../bash-5.0-patched/tests/varenv.right 2018-12-17 15:39:48.000000000 -05= 00 +--- tests/varenv.right 2019-08-22 16:05:25.000000000 -0400 +*************** +*** 147,153 **** + outside: declare -- var=3D"one" + inside: declare -x var=3D"value" +! outside: declare -x var=3D"value" +! inside: declare -- var=3D"local" +! outside: declare -x var=3D"global" + foo=3D environment foo=3D + foo=3Dfoo environment foo=3Dfoo +--- 147,153 ---- + outside: declare -- var=3D"one" + inside: declare -x var=3D"value" +! outside: declare -- var=3D"outside" +! inside: declare -x var=3D"global" +! outside: declare -- var=3D"outside" + foo=3D environment foo=3D + foo=3Dfoo environment foo=3Dfoo +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 9 + =20 + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 10 + =20 + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-011 b/src/patches/bash/bash50-011 new file mode 100644 index 000000000..a9ae690e0 --- /dev/null +++ b/src/patches/bash/bash50-011 @@ -0,0 +1,59 @@ + BASH PATCH REPORT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Bash-Release: 5.0 +Patch-ID: bash50-011 + +Bug-Reported-by: Matt Whitlock +Bug-Reference-ID:=09 +Bug-Reference-URL: https://savannah.gnu.org/support/?109671 + +Bug-Description: + +The conditional command did not perform appropriate quoted null character +removal on its arguments, causing syntax errors and attempts to stat +invalid pathnames. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/subst.c 2018-12-22 17:43:37.000000000 -0500 +--- subst.c 2019-04-14 13:25:41.000000000 -0400 +*************** +*** 3626,3630 **** + SPECIAL is 2, this is an rhs argument for the =3D~ operator, and should + be quoted appropriately for regcomp/regexec. The caller is responsible +! for removing the backslashes if the unquoted word is needed later. */ = =20 + char * + cond_expand_word (w, special) +--- 3642,3648 ---- + SPECIAL is 2, this is an rhs argument for the =3D~ operator, and should + be quoted appropriately for regcomp/regexec. The caller is responsible +! for removing the backslashes if the unquoted word is needed later. In +! any case, since we don't perform word splitting, we need to do quoted +! null character removal. */ + char * + cond_expand_word (w, special) +*************** +*** 3647,3650 **** +--- 3665,3670 ---- + if (special =3D=3D 0) /* LHS */ + { ++ if (l->word) ++ word_list_remove_quoted_nulls (l); + dequote_list (l); + r =3D string_list (l); +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 10 + =20 + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + =20 +! #define PATCHLEVEL 11 + =20 + #endif /* _PATCHLEVEL_H_ */ --=20 2.16.4 --===============6256726416991744590==--