|
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'):
|
|
|
|
*** a/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;
|
|
*** a/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_ */
|