123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- BASH PATCH REPORT
- =================
- Bash-Release: 5.2
- Patch-ID: bash52-006
- Bug-Reported-by: feng xiangjun <fengxj325@gmail.com>
- Bug-Reference-ID: <CAHH2t87LrCmO=gdyWOmGn5WJt7EucL+iOXzrry34OETe50S6uA@mail.gmail.com>
- Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00089.html
- Bug-Description:
- In interactive shells, interrupting the shell while entering a command
- substitution can inhibit alias expansion.
- Patch (apply with `patch -p0'):
- *** ../bash-5.2-patched/parse.y 2022-10-08 13:10:06.000000000 -0400
- --- parse.y 2022-10-14 10:03:19.000000000 -0400
- ***************
- *** 3307,3310 ****
- --- 3307,3312 ----
- extended_glob = global_extglob;
- #endif
- + if (parser_state & (PST_CMDSUBST|PST_STRING))
- + expand_aliases = expaliases_flag;
-
- parser_state = 0;
- ***************
- *** 4389,4392 ****
- --- 4391,4395 ----
- parser_state |= PST_NOERROR;
-
- + parser_state |= PST_STRING;
- expand_aliases = 0;
-
- ***************
- *** 6402,6406 ****
- parser_state &= ~PST_NOEXPAND; /* parse_comsub sentinel */
- /* State flags we want to set for this run through the tokenizer. */
- ! parser_state |= PST_COMPASSIGN|PST_REPARSE;
- }
-
- --- 6405,6409 ----
- parser_state &= ~PST_NOEXPAND; /* parse_comsub sentinel */
- /* State flags we want to set for this run through the tokenizer. */
- ! parser_state |= PST_COMPASSIGN|PST_REPARSE|PST_STRING;
- }
-
- *** ../bash-20221007/parser.h 2022-08-30 11:39:56.000000000 -0400
- --- parser.h 2022-10-14 09:56:18.000000000 -0400
- ***************
- *** 51,54 ****
- --- 51,55 ----
- #define PST_NOEXPAND 0x400000 /* don't expand anything in read_token_word; for command substitution */
- #define PST_NOERROR 0x800000 /* don't print error messages in yyerror */
- + #define PST_STRING 0x1000000 /* parsing a string to a command or word list */
-
- /* Definition of the delimiter stack. Needed by parse.y and bashhist.c. */
- *** ../bash-20221007/builtins/shopt.def 2022-10-07 10:25:55.000000000 -0400
- --- builtins/shopt.def 2022-10-14 09:30:11.000000000 -0400
- ***************
- *** 150,153 ****
- --- 150,156 ----
- #endif
-
- + int expaliases_flag = 0;
- + static int shopt_set_expaliases PARAMS((char *, int));
- +
- static int shopt_set_debug_mode PARAMS((char *, int));
-
- ***************
- *** 199,203 ****
- { "dotglob", &glob_dot_filenames, (shopt_set_func_t *)NULL },
- { "execfail", &no_exit_on_failed_exec, (shopt_set_func_t *)NULL },
- ! { "expand_aliases", &expand_aliases, (shopt_set_func_t *)NULL },
- #if defined (DEBUGGER)
- { "extdebug", &debugging_mode, shopt_set_debug_mode },
- --- 202,206 ----
- { "dotglob", &glob_dot_filenames, (shopt_set_func_t *)NULL },
- { "execfail", &no_exit_on_failed_exec, (shopt_set_func_t *)NULL },
- ! { "expand_aliases", &expaliases_flag, shopt_set_expaliases },
- #if defined (DEBUGGER)
- { "extdebug", &debugging_mode, shopt_set_debug_mode },
- ***************
- *** 351,355 ****
- allow_null_glob_expansion = glob_dot_filenames = 0;
- no_exit_on_failed_exec = 0;
- ! expand_aliases = 0;
- extended_quote = 1;
- fail_glob_expansion = 0;
- --- 354,358 ----
- allow_null_glob_expansion = glob_dot_filenames = 0;
- no_exit_on_failed_exec = 0;
- ! expand_aliases = expaliases_flag = 0;
- extended_quote = 1;
- fail_glob_expansion = 0;
- ***************
- *** 632,635 ****
- --- 635,647 ----
- }
-
- + static int
- + shopt_set_expaliases (option_name, mode)
- + char *option_name;
- + int mode;
- + {
- + expand_aliases = expaliases_flag;
- + return 0;
- + }
- +
- #if defined (READLINE)
- static int
- *** ../bash-20221007/builtins/common.h 2022-10-07 10:10:17.000000000 -0400
- --- builtins/common.h 2022-10-14 09:29:25.000000000 -0400
- ***************
- *** 258,261 ****
- --- 258,263 ----
- #endif
-
- + extern int expaliases_flag;
- +
- /* variables from source.def */
- extern int source_searches_cwd;
- *** ../bash-20221007/execute_cmd.c 2022-10-10 10:48:54.000000000 -0400
- --- execute_cmd.c 2022-10-14 09:32:24.000000000 -0400
- ***************
- *** 1537,1541 ****
- aliases. */
- if (ois != interactive_shell)
- ! expand_aliases = 0;
- }
-
- --- 1537,1541 ----
- aliases. */
- if (ois != interactive_shell)
- ! expand_aliases = expaliases_flag = 0;
- }
-
- *** ../bash-20221007/general.c 2021-11-04 14:12:38.000000000 -0400
- --- general.c 2022-10-14 09:34:24.000000000 -0400
- ***************
- *** 92,96 ****
- &interactive_comments,
- &source_uses_path,
- ! &expand_aliases,
- &inherit_errexit,
- &print_shift_error,
- --- 92,96 ----
- &interactive_comments,
- &source_uses_path,
- ! &expaliases_flag,
- &inherit_errexit,
- &print_shift_error,
- ***************
- *** 107,111 ****
- if (on != 0)
- {
- ! interactive_comments = source_uses_path = expand_aliases = 1;
- inherit_errexit = 1;
- source_searches_cwd = 0;
- --- 107,112 ----
- if (on != 0)
- {
- ! interactive_comments = source_uses_path = 1;
- ! expand_aliases = expaliases_flag = 1;
- inherit_errexit = 1;
- source_searches_cwd = 0;
- ***************
- *** 117,120 ****
- --- 118,122 ----
- {
- set_posix_options (saved_posix_vars);
- + expand_aliases = expaliases_flag;
- free (saved_posix_vars);
- saved_posix_vars = 0;
- ***************
- *** 123,127 ****
- {
- source_searches_cwd = 1;
- ! expand_aliases = interactive_shell;
- print_shift_error = 0;
- }
- --- 125,129 ----
- {
- source_searches_cwd = 1;
- ! expand_aliases = expaliases_flag = interactive_shell; /* XXX */
- print_shift_error = 0;
- }
- *** ../bash-5.2-patched/shell.c 2022-03-04 15:13:00.000000000 -0500
- --- shell.c 2022-10-14 09:36:19.000000000 -0400
- ***************
- *** 1845,1850 ****
- init_interactive ()
- {
- ! expand_aliases = interactive_shell = startup_state = 1;
- ! interactive = 1;
- #if defined (HISTORY)
- if (enable_history_list == -1)
- --- 1845,1850 ----
- init_interactive ()
- {
- ! expand_aliases = expaliases_flag = 1;
- ! interactive_shell = startup_state = interactive = 1;
- #if defined (HISTORY)
- if (enable_history_list == -1)
- ***************
- *** 1866,1870 ****
- #endif /* HISTORY */
- interactive_shell = startup_state = interactive = 0;
- ! expand_aliases = posixly_correct; /* XXX - was 0 not posixly_correct */
- no_line_editing = 1;
- #if defined (JOB_CONTROL)
- --- 1866,1870 ----
- #endif /* HISTORY */
- interactive_shell = startup_state = interactive = 0;
- ! expand_aliases = expaliases_flag = posixly_correct; /* XXX - was 0 not posixly_correct */
- no_line_editing = 1;
- #if defined (JOB_CONTROL)
- ***************
- *** 1883,1887 ****
- #endif
- init_noninteractive ();
- ! expand_aliases = interactive_shell = startup_state = 1;
- #if defined (HISTORY)
- remember_on_history = enable_history_list; /* XXX */
- --- 1883,1887 ----
- #endif
- init_noninteractive ();
- ! expand_aliases = expaliases_flag = interactive_shell = startup_state = 1;
- #if defined (HISTORY)
- remember_on_history = enable_history_list; /* XXX */
- ***************
- *** 2026,2030 ****
- forced_interactive = interactive_shell = 0;
- subshell_environment = running_in_background = 0;
- ! expand_aliases = 0;
- bash_argv_initialized = 0;
-
- --- 2026,2030 ----
- forced_interactive = interactive_shell = 0;
- subshell_environment = running_in_background = 0;
- ! expand_aliases = expaliases_flag = 0;
- bash_argv_initialized = 0;
-
- *** ../bash-5.2-patched/y.tab.c 2022-09-23 10:18:27.000000000 -0400
- --- y.tab.c 2022-10-14 14:57:26.000000000 -0400
- ***************
- *** 5618,5621 ****
- --- 5618,5623 ----
- extended_glob = global_extglob;
- #endif
- + if (parser_state & (PST_CMDSUBST|PST_STRING))
- + expand_aliases = expaliases_flag;
-
- parser_state = 0;
- ***************
- *** 6700,6703 ****
- --- 6702,6706 ----
- parser_state |= PST_NOERROR;
-
- + parser_state |= PST_STRING;
- expand_aliases = 0;
-
- ***************
- *** 8713,8717 ****
- parser_state &= ~PST_NOEXPAND; /* parse_comsub sentinel */
- /* State flags we want to set for this run through the tokenizer. */
- ! parser_state |= PST_COMPASSIGN|PST_REPARSE;
- }
-
- --- 8716,8720 ----
- parser_state &= ~PST_NOEXPAND; /* parse_comsub sentinel */
- /* State flags we want to set for this run through the tokenizer. */
- ! parser_state |= PST_COMPASSIGN|PST_REPARSE|PST_STRING;
- }
-
- *** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400
- --- patchlevel.h 2020-10-01 11:01:28.000000000 -0400
- ***************
- *** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
- ! #define PATCHLEVEL 5
-
- #endif /* _PATCHLEVEL_H_ */
- --- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
- ! #define PATCHLEVEL 6
-
- #endif /* _PATCHLEVEL_H_ */
|