| From https://ftp.gnu.org/gnu/bash/bash-5.0-patches/bash50-015 |
| |
| Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> |
| |
| BASH PATCH REPORT |
| ================= |
| |
| Bash-Release: 5.0 |
| Patch-ID: bash50-015 |
| |
| Bug-Reported-by: Yu Kou <ckyoog@gmail.com> |
| Bug-Reference-ID: <CAAqoF9Ko3nAShJXGzucafs-ByUagzZ4nbQonwEkwC7s9UqfWKw@mail.gmail.com> |
| Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2019-05/msg00032.html |
| |
| Bug-Description: |
| |
| If alias expansion is enabled when processing the command argument to the |
| `-c' option, an alias is defined in that command, and the command ends with |
| the invocation of that alias, the shell's command parser can prematurely |
| terminate before the entire command is executed. |
| |
| Patch (apply with `patch -p0'): |
| |
| *** ../bash-20190426/builtins/evalstring.c 2019-01-29 14:15:19.000000000 -0500 |
| --- b/builtins/evalstring.c 2019-05-15 14:19:36.000000000 -0400 |
| *************** |
| *** 92,95 **** |
| --- 92,96 ---- |
| running_trap == 0 && |
| *bash_input.location.string == '\0' && |
| + parser_expanding_alias () == 0 && |
| command->type == cm_simple && |
| signal_is_trapped (EXIT_TRAP) == 0 && |
| *************** |
| *** 106,109 **** |
| --- 107,111 ---- |
| { |
| return (*bash_input.location.string == '\0' && |
| + parser_expanding_alias () == 0 && |
| (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') && |
| command->value.Connection->second->type == cm_simple); |
| *************** |
| *** 291,295 **** |
| with_input_from_string (string, from_file); |
| clear_shell_input_line (); |
| ! while (*(bash_input.location.string)) |
| { |
| command = (COMMAND *)NULL; |
| --- 293,297 ---- |
| with_input_from_string (string, from_file); |
| clear_shell_input_line (); |
| ! while (*(bash_input.location.string) || parser_expanding_alias ()) |
| { |
| command = (COMMAND *)NULL; |
| *************** |
| *** 546,550 **** |
| |
| with_input_from_string (string, from_file); |
| ! while (*(bash_input.location.string)) |
| { |
| command = (COMMAND *)NULL; |
| --- 548,552 ---- |
| |
| with_input_from_string (string, from_file); |
| ! while (*(bash_input.location.string)) /* XXX - parser_expanding_alias () ? */ |
| { |
| command = (COMMAND *)NULL; |
| *** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
| --- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
| *************** |
| *** 26,30 **** |
| looks for to find the patch level (for the sccs version string). */ |
| |
| ! #define PATCHLEVEL 14 |
| |
| #endif /* _PATCHLEVEL_H_ */ |
| --- 26,30 ---- |
| looks for to find the patch level (for the sccs version string). */ |
| |
| ! #define PATCHLEVEL 15 |
| |
| #endif /* _PATCHLEVEL_H_ */ |