bash ver. bump
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
--- bash-2.05b/aclocal.m4.pgrp_sync 2002-06-25 14:45:43.000000000 +0100
|
||||
+++ bash-2.05b/aclocal.m4 2003-01-15 18:17:35.000000000 +0000
|
||||
@@ -1255,7 +1255,7 @@
|
||||
diff --git a/aclocal.m4 b/aclocal.m4
|
||||
--- a/aclocal.m4
|
||||
+++ b/aclocal.m4
|
||||
@@ -1324,7 +1324,7 @@ main()
|
||||
wait(&status);
|
||||
exit(ok ? 0 : 5);
|
||||
}
|
||||
-], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes,
|
||||
+], bash_cv_pgrp_pipe=yes,bash_cv_pgrp_pipe=yes,
|
||||
-]])], [bash_cv_pgrp_pipe=no], [bash_cv_pgrp_pipe=yes],
|
||||
+]])], [bash_cv_pgrp_pipe=yes], [bash_cv_pgrp_pipe=yes],
|
||||
[AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no)
|
||||
bash_cv_pgrp_pipe=no])
|
||||
])
|
||||
bash_cv_pgrp_pipe=no]
|
||||
)])
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
diff -up bash-4.1/examples/loadables/Makefile.in.examples bash-4.1/examples/loadables/Makefile.in
|
||||
--- bash-4.1/examples/loadables/Makefile.in.examples 2010-06-22 16:20:02.000000000 +0200
|
||||
+++ bash-4.1/examples/loadables/Makefile.in 2010-06-22 16:20:41.000000000 +0200
|
||||
@@ -43,7 +43,7 @@ host_os = @host_os@
|
||||
host_cpu = @host_cpu@
|
||||
diff --git a/examples/loadables/Makefile.in b/examples/loadables/Makefile.in
|
||||
--- a/examples/loadables/Makefile.in
|
||||
+++ b/examples/loadables/Makefile.in
|
||||
@@ -59,7 +59,7 @@ host_cpu = @host_cpu@
|
||||
host_vendor = @host_vendor@
|
||||
|
||||
STYLE_CFLAGS = @STYLE_CFLAGS@
|
||||
-CFLAGS = @CFLAGS@
|
||||
+CFLAGS = -O2 -g
|
||||
++CFLAGS = -O2 -g
|
||||
LOCAL_CFLAGS = @LOCAL_CFLAGS@
|
||||
DEFS = @DEFS@
|
||||
LOCAL_DEFS = @LOCAL_DEFS@
|
||||
diff -up bash-4.1/examples/loadables/perl/Makefile.in.examples bash-4.1/examples/loadables/perl/Makefile.in
|
||||
--- bash-4.1/examples/loadables/perl/Makefile.in.examples 2010-06-22 16:20:46.000000000 +0200
|
||||
+++ bash-4.1/examples/loadables/perl/Makefile.in 2010-06-22 16:21:04.000000000 +0200
|
||||
diff --git a/examples/loadables/perl/Makefile.in b/examples/loadables/perl/Makefile.in
|
||||
--- a/examples/loadables/perl/Makefile.in
|
||||
+++ b/examples/loadables/perl/Makefile.in
|
||||
@@ -42,7 +42,7 @@ SHELL = @MAKE_SHELL@
|
||||
|
||||
PERL5 = perl5
|
||||
|
||||
@@ -1,21 +1,20 @@
|
||||
diff --git a/parse.y b/parse.y
|
||||
index df1231d..2449fa8 100644
|
||||
--- a/parse.y
|
||||
+++ b/parse.y
|
||||
@@ -4482,6 +4482,8 @@ xparse_dolparen (base, string, indp, flags)
|
||||
@@ -4255,7 +4255,8 @@ xparse_dolparen (base, string, indp, flags)
|
||||
|
||||
save_parser_state (&ps);
|
||||
save_input_line_state (&ls);
|
||||
orig_eof_token = shell_eof_token;
|
||||
-
|
||||
+ /* avoid echoing every substitution again */
|
||||
+ echo_input_at_read = 0;
|
||||
#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
|
||||
saved_pushed_strings = pushed_string_list; /* separate parsing context */
|
||||
pushed_string_list = (STRING_SAVER *)NULL;
|
||||
#endif
|
||||
diff --git a/subst.c b/subst.c
|
||||
index 9ccbf33..8a9ee5c 100644
|
||||
--- a/subst.c
|
||||
+++ b/subst.c
|
||||
@@ -9453,6 +9453,7 @@ param_expand (string, sindex, quoted, expanded_something,
|
||||
@@ -10222,6 +10222,7 @@ param_expand (string, sindex, quoted, expanded_something,
|
||||
WORD_LIST *list, *l;
|
||||
WORD_DESC *tdesc, *ret;
|
||||
int tflag, nullarg;
|
||||
@@ -23,7 +22,7 @@ index 9ccbf33..8a9ee5c 100644
|
||||
|
||||
/*itrace("param_expand: `%s' pflags = %d", string+*sindex, pflags);*/
|
||||
zindex = *sindex;
|
||||
@@ -9843,6 +9844,9 @@ arithsub:
|
||||
@@ -10614,6 +10615,9 @@ arithsub:
|
||||
}
|
||||
|
||||
comsub:
|
||||
@@ -33,7 +32,7 @@ index 9ccbf33..8a9ee5c 100644
|
||||
if (pflags & PF_NOCOMSUB)
|
||||
/* we need zindex+1 because string[zindex] == RPAREN */
|
||||
temp1 = substring (string, *sindex, zindex+1);
|
||||
@@ -9855,6 +9859,7 @@ comsub:
|
||||
@@ -10626,6 +10630,7 @@ comsub:
|
||||
}
|
||||
FREE (temp);
|
||||
temp = temp1;
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
diff --git a/doc/bash.1 b/doc/bash.1
|
||||
--- a/doc/bash.1
|
||||
+++ b/doc/bash.1
|
||||
@@ -10726,6 +10726,9 @@ If set, the shell automatically closes file descriptors assigned using the
|
||||
.el above)
|
||||
instead of leaving them open when the command completes.
|
||||
.TP 8
|
||||
+.B syslog_history
|
||||
+If set, command history is logged to syslog.
|
||||
+.TP 8
|
||||
.B xpg_echo
|
||||
If set, the \fBecho\fP builtin expands backslash-escape sequences
|
||||
by default.
|
||||
@@ -1,20 +1,18 @@
|
||||
diff --git a/builtins.h b/builtins.h
|
||||
index dac95fd..5b7e811 100644
|
||||
--- a/builtins.h
|
||||
+++ b/builtins.h
|
||||
@@ -45,6 +45,7 @@
|
||||
#define ASSIGNMENT_BUILTIN 0x10 /* This builtin takes assignment statements. */
|
||||
@@ -46,6 +46,7 @@
|
||||
#define POSIX_BUILTIN 0x20 /* This builtins is special in the Posix command search order. */
|
||||
#define LOCALVAR_BUILTIN 0x40 /* This builtin creates local variables */
|
||||
+#define REQUIRES_BUILTIN 0x80 /* This builtin requires other files. */
|
||||
#define ARRAYREF_BUILTIN 0x80 /* This builtin takes array references as arguments */
|
||||
+#define REQUIRES_BUILTIN 0x100 /* This builtin requires other files. */
|
||||
|
||||
#define BASE_INDENT 4
|
||||
|
||||
diff --git a/builtins/mkbuiltins.c b/builtins/mkbuiltins.c
|
||||
index e243021..0a7a0e5 100644
|
||||
--- a/builtins/mkbuiltins.c
|
||||
+++ b/builtins/mkbuiltins.c
|
||||
@@ -69,10 +69,15 @@ extern char *strcpy ();
|
||||
@@ -69,11 +69,16 @@ extern char *strcpy ();
|
||||
#define whitespace(c) (((c) == ' ') || ((c) == '\t'))
|
||||
|
||||
/* Flag values that builtins can have. */
|
||||
@@ -25,15 +23,18 @@ index e243021..0a7a0e5 100644
|
||||
#define BUILTIN_FLAG_SPECIAL 0x01
|
||||
#define BUILTIN_FLAG_ASSIGNMENT 0x02
|
||||
#define BUILTIN_FLAG_LOCALVAR 0x04
|
||||
#define BUILTIN_FLAG_POSIX_BUILTIN 0x08
|
||||
+#define BUILTIN_FLAG_REQUIRES 0x10
|
||||
#define BUILTIN_FLAG_POSIX_BUILTIN 0x08
|
||||
#define BUILTIN_FLAG_ARRAYREF_ARG 0x10
|
||||
+#define BUILTIN_FLAG_REQUIRES 0x20
|
||||
|
||||
#define BASE_INDENT 4
|
||||
|
||||
@@ -173,11 +178,19 @@ char *posix_builtins[] =
|
||||
@@ -189,13 +194,21 @@ char *arrayvar_builtins[] =
|
||||
"typeset", "unset", "wait", /*]*/
|
||||
(char *)NULL
|
||||
};
|
||||
|
||||
-
|
||||
+
|
||||
+/* The builtin commands that cause requirements on other files. */
|
||||
+static char *requires_builtins[] =
|
||||
+{
|
||||
@@ -46,36 +47,38 @@ index e243021..0a7a0e5 100644
|
||||
static int is_assignment_builtin ();
|
||||
static int is_localvar_builtin ();
|
||||
static int is_posix_builtin ();
|
||||
static int is_arrayvar_builtin ();
|
||||
+static int is_requires_builtin ();
|
||||
|
||||
#if !defined (HAVE_RENAME)
|
||||
static int rename ();
|
||||
@@ -831,6 +844,8 @@ builtin_handler (self, defs, arg)
|
||||
new->flags |= BUILTIN_FLAG_LOCALVAR;
|
||||
if (is_posix_builtin (name))
|
||||
@@ -856,6 +869,8 @@ builtin_handler (self, defs, arg)
|
||||
new->flags |= BUILTIN_FLAG_POSIX_BUILTIN;
|
||||
if (is_arrayvar_builtin (name))
|
||||
new->flags |= BUILTIN_FLAG_ARRAYREF_ARG;
|
||||
+ if (is_requires_builtin (name))
|
||||
+ new->flags |= BUILTIN_FLAG_REQUIRES;
|
||||
|
||||
array_add ((char *)new, defs->builtins);
|
||||
building_builtin = 1;
|
||||
@@ -1250,12 +1265,13 @@ write_builtins (defs, structfile, externfile)
|
||||
@@ -1275,13 +1290,14 @@ write_builtins (defs, structfile, externfile)
|
||||
else
|
||||
fprintf (structfile, "(sh_builtin_func_t *)0x0, ");
|
||||
|
||||
- fprintf (structfile, "%s%s%s%s%s, %s_doc,\n",
|
||||
+ fprintf (structfile, "%s%s%s%s%s%s, %s_doc,\n",
|
||||
- fprintf (structfile, "%s%s%s%s%s%s, %s_doc,\n",
|
||||
+ fprintf (structfile, "%s%s%s%s%s%s%s, %s_doc,\n",
|
||||
"BUILTIN_ENABLED | STATIC_BUILTIN",
|
||||
(builtin->flags & BUILTIN_FLAG_SPECIAL) ? " | SPECIAL_BUILTIN" : "",
|
||||
(builtin->flags & BUILTIN_FLAG_ASSIGNMENT) ? " | ASSIGNMENT_BUILTIN" : "",
|
||||
(builtin->flags & BUILTIN_FLAG_LOCALVAR) ? " | LOCALVAR_BUILTIN" : "",
|
||||
(builtin->flags & BUILTIN_FLAG_POSIX_BUILTIN) ? " | POSIX_BUILTIN" : "",
|
||||
(builtin->flags & BUILTIN_FLAG_ARRAYREF_ARG) ? " | ARRAYREF_BUILTIN" : "",
|
||||
+ (builtin->flags & BUILTIN_FLAG_REQUIRES) ? " | REQUIRES_BUILTIN" : "",
|
||||
document_name (builtin));
|
||||
|
||||
/* Don't translate short document summaries that are identical
|
||||
@@ -1645,6 +1661,13 @@ is_posix_builtin (name)
|
||||
return (_find_in_table (name, posix_builtins));
|
||||
@@ -1678,6 +1694,13 @@ is_arrayvar_builtin (name)
|
||||
return (_find_in_table (name, arrayvar_builtins));
|
||||
}
|
||||
|
||||
+static int
|
||||
@@ -89,7 +92,6 @@ index e243021..0a7a0e5 100644
|
||||
static int
|
||||
rename (from, to)
|
||||
diff --git a/doc/bash.1 b/doc/bash.1
|
||||
index 5af7d42..7539368 100644
|
||||
--- a/doc/bash.1
|
||||
+++ b/doc/bash.1
|
||||
@@ -239,6 +239,14 @@ The shell becomes restricted (see
|
||||
@@ -108,10 +110,9 @@ index 5af7d42..7539368 100644
|
||||
Equivalent to \fB\-v\fP.
|
||||
.TP
|
||||
diff --git a/doc/bashref.texi b/doc/bashref.texi
|
||||
index 9e23f58..d02151e 100644
|
||||
--- a/doc/bashref.texi
|
||||
+++ b/doc/bashref.texi
|
||||
@@ -6554,6 +6554,13 @@ standard. @xref{Bash POSIX Mode}, for a description of the Bash
|
||||
@@ -6927,6 +6927,13 @@ standard. @xref{Bash POSIX Mode}, for a description of the Bash
|
||||
@item --restricted
|
||||
Make the shell a restricted shell (@pxref{The Restricted Shell}).
|
||||
|
||||
@@ -126,10 +127,9 @@ index 9e23f58..d02151e 100644
|
||||
Equivalent to @option{-v}. Print shell input lines as they're read.
|
||||
|
||||
diff --git a/eval.c b/eval.c
|
||||
index 1d967da..f197033 100644
|
||||
--- a/eval.c
|
||||
+++ b/eval.c
|
||||
@@ -137,7 +137,8 @@ reader_loop ()
|
||||
@@ -138,7 +138,8 @@ reader_loop ()
|
||||
|
||||
if (read_command () == 0)
|
||||
{
|
||||
@@ -137,13 +137,12 @@ index 1d967da..f197033 100644
|
||||
+
|
||||
+ if (interactive_shell == 0 && (read_but_dont_execute && !rpm_requires))
|
||||
{
|
||||
set_exit_status (EXECUTION_SUCCESS);
|
||||
set_exit_status (last_command_exit_value);
|
||||
dispose_command (global_command);
|
||||
diff --git a/execute_cmd.c b/execute_cmd.c
|
||||
index d2555ad..397e283 100644
|
||||
--- a/execute_cmd.c
|
||||
+++ b/execute_cmd.c
|
||||
@@ -543,6 +543,8 @@ async_redirect_stdin ()
|
||||
@@ -561,6 +561,8 @@ async_redirect_stdin ()
|
||||
|
||||
#define DESCRIBE_PID(pid) do { if (interactive) describe_pid (pid); } while (0)
|
||||
|
||||
@@ -152,22 +151,22 @@ index d2555ad..397e283 100644
|
||||
/* Execute the command passed in COMMAND, perhaps doing it asynchronously.
|
||||
COMMAND is exactly what read_command () places into GLOBAL_COMMAND.
|
||||
ASYNCHRONOUS, if non-zero, says to do this command in the background.
|
||||
@@ -574,7 +576,13 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
|
||||
@@ -592,7 +594,13 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
|
||||
|
||||
if (breaking || continuing)
|
||||
return (last_command_exit_value);
|
||||
- if (command == 0 || read_but_dont_execute)
|
||||
- if (read_but_dont_execute)
|
||||
+ if (command == 0 || (read_but_dont_execute && !rpm_requires))
|
||||
+ return (EXECUTION_SUCCESS);
|
||||
+ if (rpm_requires && command->type == cm_function_def)
|
||||
+ return last_command_exit_value =
|
||||
+ execute_intern_function (command->value.Function_def->name,
|
||||
+ command->value.Function_def);
|
||||
+ if (read_but_dont_execute)
|
||||
+ if (read_but_dont_execute)
|
||||
return (last_command_exit_value);
|
||||
if (command == 0)
|
||||
return (EXECUTION_SUCCESS);
|
||||
|
||||
QUIT;
|
||||
@@ -2836,7 +2844,7 @@ execute_for_command (for_command)
|
||||
@@ -2883,7 +2891,7 @@ execute_for_command (for_command)
|
||||
save_line_number = line_number;
|
||||
if (check_identifier (for_command->name, 1) == 0)
|
||||
{
|
||||
@@ -177,7 +176,6 @@ index d2555ad..397e283 100644
|
||||
last_command_exit_value = EX_BADUSAGE;
|
||||
jump_to_top_level (ERREXIT);
|
||||
diff --git a/execute_cmd.h b/execute_cmd.h
|
||||
index 465030a..9c7fd1c 100644
|
||||
--- a/execute_cmd.h
|
||||
+++ b/execute_cmd.h
|
||||
@@ -22,6 +22,9 @@
|
||||
@@ -191,7 +189,6 @@ index 465030a..9c7fd1c 100644
|
||||
#if defined (ARRAY_VARS)
|
||||
struct func_array_state
|
||||
diff --git a/make_cmd.c b/make_cmd.c
|
||||
index 2d7ac96..ac53526 100644
|
||||
--- a/make_cmd.c
|
||||
+++ b/make_cmd.c
|
||||
@@ -35,6 +35,8 @@
|
||||
@@ -203,7 +200,7 @@ index 2d7ac96..ac53526 100644
|
||||
#include "execute_cmd.h"
|
||||
#include "parser.h"
|
||||
#include "flags.h"
|
||||
@@ -828,6 +830,30 @@ make_coproc_command (name, command)
|
||||
@@ -839,6 +841,30 @@ make_coproc_command (name, command)
|
||||
return (make_command (cm_coproc, (SIMPLE_COM *)temp));
|
||||
}
|
||||
|
||||
@@ -234,7 +231,7 @@ index 2d7ac96..ac53526 100644
|
||||
/* Reverse the word list and redirection list in the simple command
|
||||
has just been parsed. It seems simpler to do this here the one
|
||||
time then by any other method that I can think of. */
|
||||
@@ -845,6 +871,28 @@ clean_simple_command (command)
|
||||
@@ -856,6 +882,28 @@ clean_simple_command (command)
|
||||
REVERSE_LIST (command->value.Simple->redirects, REDIRECT *);
|
||||
}
|
||||
|
||||
@@ -264,10 +261,9 @@ index 2d7ac96..ac53526 100644
|
||||
return (command);
|
||||
}
|
||||
diff --git a/shell.c b/shell.c
|
||||
index ce8087f..7dcd000 100644
|
||||
--- a/shell.c
|
||||
+++ b/shell.c
|
||||
@@ -194,6 +194,9 @@ int have_devfd = 0;
|
||||
@@ -196,6 +196,9 @@ int have_devfd = 0;
|
||||
/* The name of the .(shell)rc file. */
|
||||
static char *bashrc_file = DEFAULT_BASHRC;
|
||||
|
||||
@@ -277,7 +273,7 @@ index ce8087f..7dcd000 100644
|
||||
/* Non-zero means to act more like the Bourne shell on startup. */
|
||||
static int act_like_sh;
|
||||
|
||||
@@ -260,6 +263,7 @@ static const struct {
|
||||
@@ -266,6 +269,7 @@ static const struct {
|
||||
{ "protected", Int, &protected_mode, (char **)0x0 },
|
||||
#endif
|
||||
{ "rcfile", Charp, (int *)0x0, &bashrc_file },
|
||||
@@ -285,9 +281,9 @@ index ce8087f..7dcd000 100644
|
||||
#if defined (RESTRICTED_SHELL)
|
||||
{ "restricted", Int, &restricted, (char **)0x0 },
|
||||
#endif
|
||||
@@ -502,6 +506,12 @@ main (argc, argv, env)
|
||||
if (dump_translatable_strings)
|
||||
@@ -510,6 +514,12 @@ main (argc, argv, env)
|
||||
read_but_dont_execute = 1;
|
||||
#endif
|
||||
|
||||
+ if (rpm_requires)
|
||||
+ {
|
||||
@@ -299,10 +295,9 @@ index ce8087f..7dcd000 100644
|
||||
disable_priv_mode ();
|
||||
|
||||
diff --git a/shell.h b/shell.h
|
||||
index 8b41792..29b0efb 100644
|
||||
--- a/shell.h
|
||||
+++ b/shell.h
|
||||
@@ -99,6 +99,7 @@ extern int interactive, interactive_shell;
|
||||
@@ -100,6 +100,7 @@ extern int interactive, interactive_shell;
|
||||
extern int startup_state;
|
||||
extern int reading_shell_script;
|
||||
extern int shell_initialized;
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
diff --git a/tests/exec.right b/tests/exec.right
|
||||
index 0a249dd..fe8a127 100644
|
||||
--- a/tests/exec.right
|
||||
+++ b/tests/exec.right
|
||||
@@ -51,7 +51,6 @@ this is ohio-state
|
||||
@@ -60,7 +60,6 @@ this is ohio-state
|
||||
0
|
||||
1
|
||||
testb
|
||||
@@ -11,7 +10,6 @@ index 0a249dd..fe8a127 100644
|
||||
1
|
||||
1
|
||||
diff --git a/tests/execscript b/tests/execscript
|
||||
index 2809676..1216828 100644
|
||||
--- a/tests/execscript
|
||||
+++ b/tests/execscript
|
||||
@@ -108,8 +108,6 @@ ${THIS_SH} ./exec6.sub
|
||||
@@ -24,26 +22,27 @@ index 2809676..1216828 100644
|
||||
|
||||
${THIS_SH} ./exec10.sub
|
||||
diff --git a/tests/read.right b/tests/read.right
|
||||
index 1144083..09cd422 100644
|
||||
--- a/tests/read.right
|
||||
+++ b/tests/read.right
|
||||
@@ -33,14 +33,6 @@ a = abcdefg
|
||||
@@ -34,17 +34,6 @@ xyz
|
||||
a = xyz
|
||||
a = -xyz 123-
|
||||
a = abc
|
||||
-timeout 1: ok
|
||||
-
|
||||
-unset or null 1
|
||||
-timeout 2: ok
|
||||
-
|
||||
-./read2.sub: line 36: read: -3: invalid timeout specification
|
||||
-unset or null 2
|
||||
-timeout 3: ok
|
||||
-unset or null 3
|
||||
-./read2.sub: line 45: read: -3: invalid timeout specification
|
||||
-1
|
||||
-
|
||||
-abcde
|
||||
-abcde
|
||||
./read3.sub: line 17: read: -1: invalid number
|
||||
abc
|
||||
ab
|
||||
defg
|
||||
diff --git a/tests/read.tests b/tests/read.tests
|
||||
index 7384f05..43fcf8d 100644
|
||||
--- a/tests/read.tests
|
||||
+++ b/tests/read.tests
|
||||
@@ -95,9 +95,6 @@ echo " foo" | { IFS=$':' ; read line; recho "$line"; }
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 5.2
|
||||
Patch-ID: bash52-001
|
||||
|
||||
Bug-Reported-by: Emanuele Torre <torreemanuele6@gmail.com>
|
||||
Bug-Reference-ID: <CAA7hNqeR1eSdiGK8mjQSqJPo815JYoG-Ekz-5PrAJTEYy2e6hg@mail.gmail.com>
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-09/msg00060.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Expanding unset arrays in an arithmetic context can cause a segmentation fault.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** ../bash-5.2/subst.c 2022-08-31 17:36:46.000000000 -0400
|
||||
--- subst.c 2022-09-30 09:12:05.000000000 -0400
|
||||
***************
|
||||
*** 10858,10862 ****
|
||||
t = expand_subscript_string (exp, quoted & ~(Q_ARITH|Q_DOUBLE_QUOTES));
|
||||
free (exp);
|
||||
! exp = sh_backslash_quote (t, abstab, 0);
|
||||
free (t);
|
||||
|
||||
--- 10858,10862 ----
|
||||
t = expand_subscript_string (exp, quoted & ~(Q_ARITH|Q_DOUBLE_QUOTES));
|
||||
free (exp);
|
||||
! exp = t ? sh_backslash_quote (t, abstab, 0) : savestring ("");
|
||||
free (t);
|
||||
|
||||
*** ../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 0
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 1
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -0,0 +1,46 @@
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 5.2
|
||||
Patch-ID: bash52-002
|
||||
|
||||
Bug-Reported-by: Kan-Ru Chen <koster@debian.org>
|
||||
Bug-Reference-ID:
|
||||
Bug-Reference-URL: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1021109
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Starting bash with an invalid locale specification for LC_ALL/LANG/LC_CTYPE
|
||||
can cause the shell to crash.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** ../bash-5.2-patched/lib/readline/nls.c 2022-08-15 09:38:51.000000000 -0400
|
||||
--- lib/readline/nls.c 2022-10-05 09:23:22.000000000 -0400
|
||||
***************
|
||||
*** 142,145 ****
|
||||
--- 142,149 ----
|
||||
lspec = "";
|
||||
ret = setlocale (LC_CTYPE, lspec); /* ok, since it does not change locale */
|
||||
+ if (ret == 0 || *ret == 0)
|
||||
+ ret = setlocale (LC_CTYPE, (char *)NULL);
|
||||
+ if (ret == 0 || *ret == 0)
|
||||
+ ret = RL_DEFAULT_LOCALE;
|
||||
#else
|
||||
ret = (lspec == 0 || *lspec == 0) ? RL_DEFAULT_LOCALE : lspec;
|
||||
|
||||
*** ../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 1
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 2
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -0,0 +1,89 @@
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 5.2
|
||||
Patch-ID: bash52-003
|
||||
|
||||
Bug-Reported-by: D630 <d630@posteo.net>
|
||||
Bug-Reference-ID: <cf8523d58ac75b9ffba9519faa175618@posteo.de>
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00092.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Command substitutions need to preserve newlines instead of replacing them
|
||||
with semicolons, especially in the presence of multiple here-documents.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** ../bash-5.2-patched/print_cmd.c 2022-07-26 09:16:39.000000000 -0400
|
||||
--- print_cmd.c 2022-10-17 10:41:06.000000000 -0400
|
||||
***************
|
||||
*** 298,305 ****
|
||||
--- 298,307 ----
|
||||
{
|
||||
char c = command->value.Connection->connector;
|
||||
+ int was_newline;
|
||||
|
||||
s[0] = printing_comsub ? c : ';';
|
||||
s[1] = '\0';
|
||||
|
||||
+ was_newline = deferred_heredocs == 0 && was_heredoc == 0 && c == '\n';
|
||||
if (deferred_heredocs == 0)
|
||||
{
|
||||
***************
|
||||
*** 315,318 ****
|
||||
--- 317,322 ----
|
||||
if (inside_function_def)
|
||||
cprintf ("\n");
|
||||
+ else if (printing_comsub && c == '\n' && was_newline == 0)
|
||||
+ cprintf ("\n"); /* preserve newlines in comsubs but don't double them */
|
||||
else
|
||||
{
|
||||
***************
|
||||
*** 1366,1370 ****
|
||||
}
|
||||
else
|
||||
! newline ("}");
|
||||
|
||||
dispose_command (cmdcopy);
|
||||
--- 1371,1379 ----
|
||||
}
|
||||
else
|
||||
! {
|
||||
! /* { */
|
||||
! newline ("}");
|
||||
! was_heredoc = 0; /* not printing any here-documents now */
|
||||
! }
|
||||
|
||||
dispose_command (cmdcopy);
|
||||
***************
|
||||
*** 1443,1447 ****
|
||||
}
|
||||
else
|
||||
! newline ("}");
|
||||
|
||||
result = the_printed_command;
|
||||
--- 1452,1459 ----
|
||||
}
|
||||
else
|
||||
! { /* { */
|
||||
! newline ("}");
|
||||
! was_heredoc = 0;
|
||||
! }
|
||||
|
||||
result = the_printed_command;
|
||||
*** ../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 2
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 3
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -0,0 +1,70 @@
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 5.2
|
||||
Patch-ID: bash52-004
|
||||
|
||||
Bug-Reported-by: Antoine <bug-bash@glitchimini.net>
|
||||
Bug-Reference-ID: <8bd59753-05ff-9b09-2337-2c7f52ded650@glitchimini.net>
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00022.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Bash needs to keep better track of nested brace expansions to avoid problems
|
||||
with quoting and POSIX semantics.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** ../bash-5.2-patched/subst.c 2022-10-05 10:22:02.000000000 -0400
|
||||
--- subst.c 2022-10-06 15:19:08.000000000 -0400
|
||||
***************
|
||||
*** 1799,1802 ****
|
||||
--- 1804,1810 ----
|
||||
}
|
||||
|
||||
+ #define PARAMEXPNEST_MAX 32 // for now
|
||||
+ static int dbstate[PARAMEXPNEST_MAX];
|
||||
+
|
||||
/* Extract a parameter expansion expression within ${ and } from STRING.
|
||||
Obey the Posix.2 rules for finding the ending `}': count braces while
|
||||
***************
|
||||
*** 1829,1832 ****
|
||||
--- 1837,1842 ----
|
||||
return (extract_heredoc_dolbrace_string (string, sindex, quoted, flags));
|
||||
|
||||
+ dbstate[0] = dolbrace_state;
|
||||
+
|
||||
pass_character = 0;
|
||||
nesting_level = 1;
|
||||
***************
|
||||
*** 1853,1856 ****
|
||||
--- 1863,1868 ----
|
||||
if (string[i] == '$' && string[i+1] == LBRACE)
|
||||
{
|
||||
+ if (nesting_level < PARAMEXPNEST_MAX)
|
||||
+ dbstate[nesting_level] = dolbrace_state;
|
||||
nesting_level++;
|
||||
i += 2;
|
||||
***************
|
||||
*** 1865,1868 ****
|
||||
--- 1877,1881 ----
|
||||
if (nesting_level == 0)
|
||||
break;
|
||||
+ dolbrace_state = (nesting_level < PARAMEXPNEST_MAX) ? dbstate[nesting_level] : dbstate[0]; /* Guess using initial state */
|
||||
i++;
|
||||
continue;
|
||||
*** ../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 3
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 4
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -0,0 +1,47 @@
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 5.2
|
||||
Patch-ID: bash52-005
|
||||
|
||||
Bug-Reported-by: Justin Wood (Callek) <callek@gmail.com>
|
||||
Bug-Reference-ID: <CANBDKY9fp2yiXONP7RY4kNuRteuovUebxSJaqePHeu7cyaFS9Q@mail.gmail.com>
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00088.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Null pattern substitution replacement strings can cause a crash.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** ../bash-5.2-patched/subst.c 2022-10-05 10:22:02.000000000 -0400
|
||||
--- subst.c 2022-10-13 16:57:26.000000000 -0400
|
||||
***************
|
||||
*** 8966,8970 ****
|
||||
}
|
||||
else if (*string == 0 && (match_pattern (string, pat, mtype, &s, &e) != 0))
|
||||
! return ((mflags & MATCH_EXPREP) ? strcreplace (rep, '&', "", 2) : savestring (rep));
|
||||
|
||||
ret = (char *)xmalloc (rsize = 64);
|
||||
--- 8966,8971 ----
|
||||
}
|
||||
else if (*string == 0 && (match_pattern (string, pat, mtype, &s, &e) != 0))
|
||||
! return (mflags & MATCH_EXPREP) ? strcreplace (rep, '&', "", 2)
|
||||
! : (rep ? savestring (rep) : savestring (""));
|
||||
|
||||
ret = (char *)xmalloc (rsize = 64);
|
||||
*** ../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 4
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 5
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -0,0 +1,293 @@
|
||||
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_ */
|
||||
@@ -0,0 +1,262 @@
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 5.2
|
||||
Patch-ID: bash52-007
|
||||
|
||||
Bug-Reported-by: Bruce Jerrick
|
||||
Bug-Reference-ID:
|
||||
Bug-Reference-URL: https://bugzilla.redhat.com/show_bug.cgi?id=2134307
|
||||
|
||||
Bug-Description:
|
||||
|
||||
This patch fixes several problems with alias expansion inside command
|
||||
substitutions when in POSIX mode.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** /fs1/chet/scratch/bash-5.2.6/parse.y 2022-11-02 10:36:54.000000000 -0400
|
||||
--- parse.y 2022-10-24 10:53:26.000000000 -0400
|
||||
***************
|
||||
*** 3613,3616 ****
|
||||
--- 3614,3618 ----
|
||||
#define P_ARRAYSUB 0x0020 /* parsing a [...] array subscript for assignment */
|
||||
#define P_DOLBRACE 0x0040 /* parsing a ${...} construct */
|
||||
+ #define P_ARITH 0x0080 /* parsing a $(( )) arithmetic expansion */
|
||||
|
||||
/* Lexical state while parsing a grouping construct or $(...). */
|
||||
***************
|
||||
*** 3911,3914 ****
|
||||
--- 3914,3920 ----
|
||||
else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */
|
||||
goto parse_dollar_word;
|
||||
+ else if ((flags & P_ARITH) && (tflags & LEX_WASDOL) && ch == '(') /*)*/
|
||||
+ /* $() inside $(( ))/$[ ] */
|
||||
+ goto parse_dollar_word;
|
||||
#if defined (PROCESS_SUBSTITUTION)
|
||||
/* XXX - technically this should only be recognized at the start of
|
||||
***************
|
||||
*** 3941,3945 ****
|
||||
nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags);
|
||||
else if (ch == '[') /* ] */
|
||||
! nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags);
|
||||
|
||||
CHECK_NESTRET_ERROR ();
|
||||
--- 3947,3951 ----
|
||||
nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags);
|
||||
else if (ch == '[') /* ] */
|
||||
! nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags|P_ARITH);
|
||||
|
||||
CHECK_NESTRET_ERROR ();
|
||||
***************
|
||||
*** 4080,4084 ****
|
||||
shell_ungetc (peekc);
|
||||
if (peekc == '(') /*)*/
|
||||
! return (parse_matched_pair (qc, open, close, lenp, 0));
|
||||
}
|
||||
|
||||
--- 4086,4090 ----
|
||||
shell_ungetc (peekc);
|
||||
if (peekc == '(') /*)*/
|
||||
! return (parse_matched_pair (qc, open, close, lenp, P_ARITH));
|
||||
}
|
||||
|
||||
***************
|
||||
*** 4501,4505 ****
|
||||
|
||||
exp_lineno = line_number;
|
||||
! ttok = parse_matched_pair (0, '(', ')', &ttoklen, 0);
|
||||
rval = 1;
|
||||
if (ttok == &matched_pair_error)
|
||||
--- 4512,4516 ----
|
||||
|
||||
exp_lineno = line_number;
|
||||
! ttok = parse_matched_pair (0, '(', ')', &ttoklen, P_ARITH);
|
||||
rval = 1;
|
||||
if (ttok == &matched_pair_error)
|
||||
***************
|
||||
*** 5016,5020 ****
|
||||
}
|
||||
else
|
||||
! ttok = parse_matched_pair (cd, '[', ']', &ttoklen, 0);
|
||||
if (ttok == &matched_pair_error)
|
||||
return -1; /* Bail immediately. */
|
||||
--- 5030,5034 ----
|
||||
}
|
||||
else
|
||||
! ttok = parse_matched_pair (cd, '[', ']', &ttoklen, P_ARITH);
|
||||
if (ttok == &matched_pair_error)
|
||||
return -1; /* Bail immediately. */
|
||||
*** ../bash-5.2.6/y.tab.c 2022-11-02 10:36:54.000000000 -0400
|
||||
--- y.tab.c 2022-11-02 10:55:58.000000000 -0400
|
||||
***************
|
||||
*** 5924,5927 ****
|
||||
--- 5924,5928 ----
|
||||
#define P_ARRAYSUB 0x0020 /* parsing a [...] array subscript for assignment */
|
||||
#define P_DOLBRACE 0x0040 /* parsing a ${...} construct */
|
||||
+ #define P_ARITH 0x0080 /* parsing a $(( )) arithmetic expansion */
|
||||
|
||||
/* Lexical state while parsing a grouping construct or $(...). */
|
||||
***************
|
||||
*** 6222,6225 ****
|
||||
--- 6223,6229 ----
|
||||
else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */
|
||||
goto parse_dollar_word;
|
||||
+ else if ((flags & P_ARITH) && (tflags & LEX_WASDOL) && ch == '(') /*)*/
|
||||
+ /* $() inside $(( ))/$[ ] */
|
||||
+ goto parse_dollar_word;
|
||||
#if defined (PROCESS_SUBSTITUTION)
|
||||
/* XXX - technically this should only be recognized at the start of
|
||||
***************
|
||||
*** 6252,6256 ****
|
||||
nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags);
|
||||
else if (ch == '[') /* ] */
|
||||
! nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags);
|
||||
|
||||
CHECK_NESTRET_ERROR ();
|
||||
--- 6256,6260 ----
|
||||
nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags);
|
||||
else if (ch == '[') /* ] */
|
||||
! nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags|P_ARITH);
|
||||
|
||||
CHECK_NESTRET_ERROR ();
|
||||
***************
|
||||
*** 6391,6395 ****
|
||||
shell_ungetc (peekc);
|
||||
if (peekc == '(') /*)*/
|
||||
! return (parse_matched_pair (qc, open, close, lenp, 0));
|
||||
}
|
||||
|
||||
--- 6395,6399 ----
|
||||
shell_ungetc (peekc);
|
||||
if (peekc == '(') /*)*/
|
||||
! return (parse_matched_pair (qc, open, close, lenp, P_ARITH));
|
||||
}
|
||||
|
||||
***************
|
||||
*** 6812,6816 ****
|
||||
|
||||
exp_lineno = line_number;
|
||||
! ttok = parse_matched_pair (0, '(', ')', &ttoklen, 0);
|
||||
rval = 1;
|
||||
if (ttok == &matched_pair_error)
|
||||
--- 6816,6820 ----
|
||||
|
||||
exp_lineno = line_number;
|
||||
! ttok = parse_matched_pair (0, '(', ')', &ttoklen, P_ARITH);
|
||||
rval = 1;
|
||||
if (ttok == &matched_pair_error)
|
||||
***************
|
||||
*** 7327,7331 ****
|
||||
}
|
||||
else
|
||||
! ttok = parse_matched_pair (cd, '[', ']', &ttoklen, 0);
|
||||
if (ttok == &matched_pair_error)
|
||||
return -1; /* Bail immediately. */
|
||||
--- 7331,7335 ----
|
||||
}
|
||||
else
|
||||
! ttok = parse_matched_pair (cd, '[', ']', &ttoklen, P_ARITH);
|
||||
if (ttok == &matched_pair_error)
|
||||
return -1; /* Bail immediately. */
|
||||
*** /fs1/chet/scratch/bash-5.2.6/builtins/evalstring.c 2022-07-18 14:46:56.000000000 -0400
|
||||
--- builtins/evalstring.c 2022-10-18 10:57:51.000000000 -0400
|
||||
***************
|
||||
*** 432,435 ****
|
||||
--- 432,437 ----
|
||||
if (parse_command () == 0)
|
||||
{
|
||||
+ int local_expalias, local_alflag;
|
||||
+
|
||||
if ((flags & SEVAL_PARSEONLY) || (interactive_shell == 0 && read_but_dont_execute))
|
||||
{
|
||||
***************
|
||||
*** 508,511 ****
|
||||
--- 510,526 ----
|
||||
#endif /* ONESHOT */
|
||||
|
||||
+ /* We play tricks in the parser and command_substitute() turning
|
||||
+ expand_aliases on and off depending on which parsing pass and
|
||||
+ whether or not we're in posix mode. This only matters for
|
||||
+ parsing, and we let the higher layers deal with that. We just
|
||||
+ want to ensure that expand_aliases is set to the appropriate
|
||||
+ global value when we go to execute this command, so we save
|
||||
+ and restore it around the execution (we don't restore it if
|
||||
+ the global value of the flag (expaliases_flag) changes). */
|
||||
+ local_expalias = expand_aliases;
|
||||
+ local_alflag = expaliases_flag;
|
||||
+ if (subshell_environment & SUBSHELL_COMSUB)
|
||||
+ expand_aliases = expaliases_flag;
|
||||
+
|
||||
/* See if this is a candidate for $( <file ). */
|
||||
if (startup_state == 2 &&
|
||||
***************
|
||||
*** 525,528 ****
|
||||
--- 540,547 ----
|
||||
discard_unwind_frame ("pe_dispose");
|
||||
|
||||
+ /* If the global value didn't change, we restore what we had. */
|
||||
+ if ((subshell_environment & SUBSHELL_COMSUB) && local_alflag == expaliases_flag)
|
||||
+ expand_aliases = local_expalias;
|
||||
+
|
||||
if (flags & SEVAL_ONECMD)
|
||||
{
|
||||
*** /fs1/chet/scratch/bash-5.2.6/command.h 2021-04-30 15:43:15.000000000 -0400
|
||||
--- command.h 2022-10-18 11:44:31.000000000 -0400
|
||||
***************
|
||||
*** 115,118 ****
|
||||
--- 115,119 ----
|
||||
#define PF_EXPANDRHS 0x20 /* same as W_EXPANDRHS */
|
||||
#define PF_ALLINDS 0x40 /* array, act as if [@] was supplied */
|
||||
+ #define PF_BACKQUOTE 0x80 /* differentiate `` from $() for command_substitute */
|
||||
|
||||
/* Possible values for subshell_environment */
|
||||
*** /fs1/chet/scratch/bash-5.2.6/subst.c 2022-11-02 10:28:10.000000000 -0400
|
||||
--- subst.c 2022-10-20 12:41:07.000000000 -0400
|
||||
***************
|
||||
*** 7124,7129 ****
|
||||
|
||||
/* We want to expand aliases on this pass if we are not in posix mode
|
||||
! for backwards compatibility. */
|
||||
! if (expand_aliases)
|
||||
expand_aliases = posixly_correct == 0;
|
||||
|
||||
--- 7133,7142 ----
|
||||
|
||||
/* We want to expand aliases on this pass if we are not in posix mode
|
||||
! for backwards compatibility. parse_and_execute() takes care of
|
||||
! setting expand_aliases back to the global value when executing the
|
||||
! parsed string. We only do this for $(...) command substitution,
|
||||
! since that is what parse_comsub handles; `` comsubs are processed
|
||||
! using parse.y:parse_matched_pair(). */
|
||||
! if (expand_aliases && (flags & PF_BACKQUOTE) == 0)
|
||||
expand_aliases = posixly_correct == 0;
|
||||
|
||||
***************
|
||||
*** 11293,11297 ****
|
||||
{
|
||||
de_backslash (temp);
|
||||
! tword = command_substitute (temp, quoted, 0);
|
||||
temp1 = tword ? tword->word : (char *)NULL;
|
||||
if (tword)
|
||||
--- 11306,11310 ----
|
||||
{
|
||||
de_backslash (temp);
|
||||
! tword = command_substitute (temp, quoted, PF_BACKQUOTE);
|
||||
temp1 = tword ? tword->word : (char *)NULL;
|
||||
if (tword)
|
||||
*** ../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 6
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 7
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -0,0 +1,58 @@
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 5.2
|
||||
Patch-ID: bash52-008
|
||||
|
||||
Bug-Reported-by: Glenn Jackman <glenn.jackman@gmail.com>
|
||||
Bug-Reference-ID: <CAFC8ewQDx7hzNJzveuJ5o4FWo=ij7MzckiJVN_6NXjp504QZeg@mail.gmail.com>
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00095.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Array subscript expansion can inappropriately quote brackets if the expression
|
||||
contains < or >.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** ../bash-20221015/subst.c 2022-10-18 10:47:33.000000000 -0500
|
||||
--- subst.c 2022-10-20 11:41:07.000000000 -0500
|
||||
***************
|
||||
*** 3820,3823 ****
|
||||
--- 3820,3827 ----
|
||||
#endif
|
||||
|
||||
+ /* We don't perform process substitution in arithmetic expressions, so don't
|
||||
+ bother checking for it. */
|
||||
+ #define ARITH_EXP_CHAR(s) (s == '$' || s == '`' || s == CTLESC || s == '~')
|
||||
+
|
||||
/* If there are any characters in STRING that require full expansion,
|
||||
then call FUNC to expand STRING; otherwise just perform quote
|
||||
***************
|
||||
*** 4029,4033 ****
|
||||
while (string[i])
|
||||
{
|
||||
! if (EXP_CHAR (string[i]))
|
||||
break;
|
||||
else if (string[i] == '\'' || string[i] == '\\' || string[i] == '"')
|
||||
--- 4033,4037 ----
|
||||
while (string[i])
|
||||
{
|
||||
! if (ARITH_EXP_CHAR (string[i]))
|
||||
break;
|
||||
else if (string[i] == '\'' || string[i] == '\\' || string[i] == '"')
|
||||
*** ../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 7
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 8
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -0,0 +1,43 @@
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 5.2
|
||||
Patch-ID: bash52-009
|
||||
|
||||
Bug-Reported-by: Corey Hickey <bugfood-ml@fatooh.org>
|
||||
Bug-Reference-ID: <134330ef-0ead-d73e-68eb-d58fc51efdba@fatooh.org>
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/help-bash/2022-10/msg00025.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Bash arithmetic expansion should allow `@' and `*' to be used as associative
|
||||
array keys in expressions.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** ../bash-5.2-patched/expr.c 2022-07-11 10:03:34.000000000 -0400
|
||||
--- expr.c 2022-10-31 10:51:08.000000000 -0400
|
||||
***************
|
||||
*** 1169,1172 ****
|
||||
--- 1169,1174 ----
|
||||
#if defined (ARRAY_VARS)
|
||||
aflag = tflag; /* use a different variable for now */
|
||||
+ if (shell_compatibility_level > 51)
|
||||
+ aflag |= AV_ATSTARKEYS;
|
||||
v = (e == ']') ? array_variable_part (tok, tflag, (char **)0, (int *)0) : find_variable (tok);
|
||||
#else
|
||||
*** ../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 8
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 9
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -0,0 +1,71 @@
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 5.2
|
||||
Patch-ID: bash52-010
|
||||
|
||||
Bug-Reported-by: larsh@apache.org
|
||||
Bug-Reference-ID:
|
||||
Bug-Reference-URL: https://savannah.gnu.org/support/?110744
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Bash-5.2 checks the first 128 characters of an executable file that execve()
|
||||
refuses to execute to see whether it's a binary file before trying to
|
||||
execute it as a shell script. This defeats some previously-supported use
|
||||
cases like "self-executing" jar files or "self-uncompressing" scripts.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** ../bash-5.2-patched/general.c 2022-11-07 10:31:42.000000000 -0500
|
||||
--- general.c 2022-11-18 14:48:45.000000000 -0500
|
||||
***************
|
||||
*** 684,687 ****
|
||||
--- 684,688 ----
|
||||
{
|
||||
register int i;
|
||||
+ int nline;
|
||||
unsigned char c;
|
||||
|
||||
***************
|
||||
*** 690,702 ****
|
||||
|
||||
/* Generally we check the first line for NULs. If the first line looks like
|
||||
! a `#!' interpreter specifier, we just look for NULs anywhere in the
|
||||
! buffer. */
|
||||
! if (sample[0] == '#' && sample[1] == '!')
|
||||
! return (memchr (sample, '\0', sample_len) != NULL);
|
||||
|
||||
for (i = 0; i < sample_len; i++)
|
||||
{
|
||||
c = sample[i];
|
||||
! if (c == '\n')
|
||||
return (0);
|
||||
if (c == '\0')
|
||||
--- 691,701 ----
|
||||
|
||||
/* Generally we check the first line for NULs. If the first line looks like
|
||||
! a `#!' interpreter specifier, we look for NULs in the first two lines. */
|
||||
! nline = (sample[0] == '#' && sample[1] == '!') ? 2 : 1;
|
||||
|
||||
for (i = 0; i < sample_len; i++)
|
||||
{
|
||||
c = sample[i];
|
||||
! if (c == '\n' && --nline == 0)
|
||||
return (0);
|
||||
if (c == '\0')
|
||||
*** ../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 9
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 10
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -0,0 +1,45 @@
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 5.2
|
||||
Patch-ID: bash52-011
|
||||
|
||||
Bug-Reported-by: Fabien Orjollet <of1@disroot.org>
|
||||
Bug-Reference-ID:
|
||||
Bug-Reference-URL: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1023776
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
Using timeouts and readline editing with the `read' builtin (read -e -t) can
|
||||
leave the readline timeout enabled, potentially resulting in an erroneous
|
||||
timeout on the next call.
|
||||
|
||||
*** ../bash-5.2-patched/builtins/read.def 2022-06-02 14:23:19.000000000 -0400
|
||||
--- builtins/read.def 2022-11-10 10:27:45.000000000 -0500
|
||||
***************
|
||||
*** 168,171 ****
|
||||
--- 168,174 ----
|
||||
if (read_timeout)
|
||||
shtimer_clear (read_timeout);
|
||||
+ #if defined (READLINE)
|
||||
+ rl_clear_timeout ();
|
||||
+ #endif
|
||||
read_timeout = 0;
|
||||
}
|
||||
*** ../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 10
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 11
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -0,0 +1,344 @@
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 5.2
|
||||
Patch-ID: bash52-012
|
||||
|
||||
Bug-Reported-by: Kerin Millar <kfm@plushkava.net>
|
||||
Bug-Reference-ID: <20221002095107.89561bc811e549b55644df11@plushkava.net>
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00001.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
When running in bash compatibility mode, nested command substitutions can
|
||||
leave the `extglob' option enabled.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** /fs1/chet/scratch/bash-5.2.12/builtins/shopt.def 2022-11-07 10:31:42.000000000 -0500
|
||||
--- builtins/shopt.def 2022-10-14 09:30:11.000000000 -0400
|
||||
***************
|
||||
*** 150,153 ****
|
||||
--- 150,158 ----
|
||||
#endif
|
||||
|
||||
+ #if defined (EXTENDED_GLOB)
|
||||
+ int extglob_flag = EXTGLOB_DEFAULT;
|
||||
+ static int shopt_set_extglob PARAMS((char *, int));
|
||||
+ #endif
|
||||
+
|
||||
int expaliases_flag = 0;
|
||||
static int shopt_set_expaliases PARAMS((char *, int));
|
||||
***************
|
||||
*** 207,211 ****
|
||||
#endif
|
||||
#if defined (EXTENDED_GLOB)
|
||||
! { "extglob", &extended_glob, (shopt_set_func_t *)NULL },
|
||||
#endif
|
||||
{ "extquote", &extended_quote, (shopt_set_func_t *)NULL },
|
||||
--- 212,216 ----
|
||||
#endif
|
||||
#if defined (EXTENDED_GLOB)
|
||||
! { "extglob", &extglob_flag, shopt_set_extglob },
|
||||
#endif
|
||||
{ "extquote", &extended_quote, (shopt_set_func_t *)NULL },
|
||||
***************
|
||||
*** 378,382 ****
|
||||
|
||||
#if defined (EXTENDED_GLOB)
|
||||
! extended_glob = EXTGLOB_DEFAULT;
|
||||
#endif
|
||||
|
||||
--- 383,387 ----
|
||||
|
||||
#if defined (EXTENDED_GLOB)
|
||||
! extended_glob = extglob_flag = EXTGLOB_DEFAULT;
|
||||
#endif
|
||||
|
||||
***************
|
||||
*** 644,647 ****
|
||||
--- 649,663 ----
|
||||
}
|
||||
|
||||
+ #if defined (EXTENDED_GLOB)
|
||||
+ static int
|
||||
+ shopt_set_extglob (option_name, mode)
|
||||
+ char *option_name;
|
||||
+ int mode;
|
||||
+ {
|
||||
+ extended_glob = extglob_flag;
|
||||
+ return 0;
|
||||
+ }
|
||||
+ #endif
|
||||
+
|
||||
#if defined (READLINE)
|
||||
static int
|
||||
*** /fs1/chet/scratch/bash-5.2.12/builtins/common.h 2022-11-07 10:31:42.000000000 -0500
|
||||
--- builtins/common.h 2022-10-14 09:29:25.000000000 -0400
|
||||
***************
|
||||
*** 258,261 ****
|
||||
--- 258,265 ----
|
||||
#endif
|
||||
|
||||
+ #if defined (EXTENDED_GLOB)
|
||||
+ extern int extglob_flag;
|
||||
+ #endif
|
||||
+
|
||||
extern int expaliases_flag;
|
||||
|
||||
*** /fs1/chet/scratch/bash-5.2.12/execute_cmd.c 2022-11-07 10:31:42.000000000 -0500
|
||||
--- execute_cmd.c 2022-11-02 16:32:12.000000000 -0400
|
||||
***************
|
||||
*** 3991,4001 ****
|
||||
#endif /* COND_REGEXP */
|
||||
{
|
||||
- int oe;
|
||||
- oe = extended_glob;
|
||||
extended_glob = 1;
|
||||
result = binary_test (cond->op->word, arg1, arg2, TEST_PATMATCH|TEST_ARITHEXP|TEST_LOCALE)
|
||||
? EXECUTION_SUCCESS
|
||||
: EXECUTION_FAILURE;
|
||||
! extended_glob = oe;
|
||||
}
|
||||
if (arg1 != nullstr)
|
||||
--- 4015,4023 ----
|
||||
#endif /* COND_REGEXP */
|
||||
{
|
||||
extended_glob = 1;
|
||||
result = binary_test (cond->op->word, arg1, arg2, TEST_PATMATCH|TEST_ARITHEXP|TEST_LOCALE)
|
||||
? EXECUTION_SUCCESS
|
||||
: EXECUTION_FAILURE;
|
||||
! extended_glob = extglob_flag;
|
||||
}
|
||||
if (arg1 != nullstr)
|
||||
*** /fs1/chet/scratch/bash-5.2.9/parse.y 2022-11-07 10:31:47.000000000 -0500
|
||||
--- parse.y 2022-11-14 11:27:22.000000000 -0500
|
||||
***************
|
||||
*** 126,130 ****
|
||||
|
||||
#if defined (EXTENDED_GLOB)
|
||||
! extern int extended_glob;
|
||||
#endif
|
||||
|
||||
--- 126,130 ----
|
||||
|
||||
#if defined (EXTENDED_GLOB)
|
||||
! extern int extended_glob, extglob_flag;
|
||||
#endif
|
||||
|
||||
***************
|
||||
*** 3305,3309 ****
|
||||
/* Reset to global value of extended glob */
|
||||
if (parser_state & (PST_EXTPAT|PST_CMDSUBST))
|
||||
! extended_glob = global_extglob;
|
||||
#endif
|
||||
if (parser_state & (PST_CMDSUBST|PST_STRING))
|
||||
--- 3321,3325 ----
|
||||
/* Reset to global value of extended glob */
|
||||
if (parser_state & (PST_EXTPAT|PST_CMDSUBST))
|
||||
! extended_glob = extglob_flag;
|
||||
#endif
|
||||
if (parser_state & (PST_CMDSUBST|PST_STRING))
|
||||
***************
|
||||
*** 4125,4132 ****
|
||||
#if defined (EXTENDED_GLOB)
|
||||
/* If (parser_state & PST_EXTPAT), we're parsing an extended pattern for a
|
||||
! conditional command and have already set global_extglob appropriately. */
|
||||
if (shell_compatibility_level <= 51 && was_extpat == 0)
|
||||
{
|
||||
! local_extglob = global_extglob = extended_glob;
|
||||
extended_glob = 1;
|
||||
}
|
||||
--- 4143,4150 ----
|
||||
#if defined (EXTENDED_GLOB)
|
||||
/* If (parser_state & PST_EXTPAT), we're parsing an extended pattern for a
|
||||
! conditional command and have already set extended_glob appropriately. */
|
||||
if (shell_compatibility_level <= 51 && was_extpat == 0)
|
||||
{
|
||||
! local_extglob = extended_glob;
|
||||
extended_glob = 1;
|
||||
}
|
||||
***************
|
||||
*** 4236,4240 ****
|
||||
sh_parser_state_t ps;
|
||||
sh_input_line_state_t ls;
|
||||
! int orig_ind, nc, sflags, start_lineno;
|
||||
char *ret, *ep, *ostring;
|
||||
|
||||
--- 4256,4260 ----
|
||||
sh_parser_state_t ps;
|
||||
sh_input_line_state_t ls;
|
||||
! int orig_ind, nc, sflags, start_lineno, local_extglob;
|
||||
char *ret, *ep, *ostring;
|
||||
|
||||
***************
|
||||
*** 4279,4283 ****
|
||||
expand_aliases = 0;
|
||||
#if defined (EXTENDED_GLOB)
|
||||
! global_extglob = extended_glob; /* for reset_parser() */
|
||||
#endif
|
||||
|
||||
--- 4299,4303 ----
|
||||
expand_aliases = 0;
|
||||
#if defined (EXTENDED_GLOB)
|
||||
! local_extglob = extended_glob;
|
||||
#endif
|
||||
|
||||
***************
|
||||
*** 4297,4300 ****
|
||||
--- 4317,4323 ----
|
||||
restore_parser_state (&ps);
|
||||
|
||||
+ #if defined (EXTENDED_GLOB)
|
||||
+ extended_glob = local_extglob;
|
||||
+ #endif
|
||||
token_to_read = 0;
|
||||
|
||||
***************
|
||||
*** 4732,4741 ****
|
||||
--- 4755,4768 ----
|
||||
|
||||
/* rhs */
|
||||
+ #if defined (EXTENDED_GLOB)
|
||||
local_extglob = extended_glob;
|
||||
if (parser_state & PST_EXTPAT)
|
||||
extended_glob = 1;
|
||||
+ #endif
|
||||
tok = read_token (READ);
|
||||
+ #if defined (EXTENDED_GLOB)
|
||||
if (parser_state & PST_EXTPAT)
|
||||
extended_glob = local_extglob;
|
||||
+ #endif
|
||||
parser_state &= ~(PST_REGEXP|PST_EXTPAT);
|
||||
|
||||
***************
|
||||
*** 4784,4788 ****
|
||||
COND_COM *cexp;
|
||||
|
||||
- global_extglob = extended_glob;
|
||||
cexp = cond_expr ();
|
||||
return (make_cond_command (cexp));
|
||||
--- 4811,4814 ----
|
||||
*** y.tab.c.save 2022-11-07 10:31:47.000000000 -0500
|
||||
--- y.tab.c 2022-11-18 15:58:03.000000000 -0500
|
||||
***************
|
||||
*** 176,180 ****
|
||||
|
||||
#if defined (EXTENDED_GLOB)
|
||||
! extern int extended_glob;
|
||||
#endif
|
||||
|
||||
--- 176,180 ----
|
||||
|
||||
#if defined (EXTENDED_GLOB)
|
||||
! extern int extended_glob, extglob_flag;
|
||||
#endif
|
||||
|
||||
***************
|
||||
*** 5616,5620 ****
|
||||
/* Reset to global value of extended glob */
|
||||
if (parser_state & (PST_EXTPAT|PST_CMDSUBST))
|
||||
! extended_glob = global_extglob;
|
||||
#endif
|
||||
if (parser_state & (PST_CMDSUBST|PST_STRING))
|
||||
--- 5616,5620 ----
|
||||
/* Reset to global value of extended glob */
|
||||
if (parser_state & (PST_EXTPAT|PST_CMDSUBST))
|
||||
! extended_glob = extglob_flag;
|
||||
#endif
|
||||
if (parser_state & (PST_CMDSUBST|PST_STRING))
|
||||
***************
|
||||
*** 6436,6443 ****
|
||||
#if defined (EXTENDED_GLOB)
|
||||
/* If (parser_state & PST_EXTPAT), we're parsing an extended pattern for a
|
||||
! conditional command and have already set global_extglob appropriately. */
|
||||
if (shell_compatibility_level <= 51 && was_extpat == 0)
|
||||
{
|
||||
! local_extglob = global_extglob = extended_glob;
|
||||
extended_glob = 1;
|
||||
}
|
||||
--- 6436,6443 ----
|
||||
#if defined (EXTENDED_GLOB)
|
||||
/* If (parser_state & PST_EXTPAT), we're parsing an extended pattern for a
|
||||
! conditional command and have already set extended_glob appropriately. */
|
||||
if (shell_compatibility_level <= 51 && was_extpat == 0)
|
||||
{
|
||||
! local_extglob = extended_glob;
|
||||
extended_glob = 1;
|
||||
}
|
||||
***************
|
||||
*** 6547,6551 ****
|
||||
sh_parser_state_t ps;
|
||||
sh_input_line_state_t ls;
|
||||
! int orig_ind, nc, sflags, start_lineno;
|
||||
char *ret, *ep, *ostring;
|
||||
|
||||
--- 6547,6551 ----
|
||||
sh_parser_state_t ps;
|
||||
sh_input_line_state_t ls;
|
||||
! int orig_ind, nc, sflags, start_lineno, local_extglob;
|
||||
char *ret, *ep, *ostring;
|
||||
|
||||
***************
|
||||
*** 6590,6594 ****
|
||||
expand_aliases = 0;
|
||||
#if defined (EXTENDED_GLOB)
|
||||
! global_extglob = extended_glob; /* for reset_parser() */
|
||||
#endif
|
||||
|
||||
--- 6590,6594 ----
|
||||
expand_aliases = 0;
|
||||
#if defined (EXTENDED_GLOB)
|
||||
! local_extglob = extended_glob;
|
||||
#endif
|
||||
|
||||
***************
|
||||
*** 6608,6611 ****
|
||||
--- 6608,6614 ----
|
||||
restore_parser_state (&ps);
|
||||
|
||||
+ #if defined (EXTENDED_GLOB)
|
||||
+ extended_glob = local_extglob;
|
||||
+ #endif
|
||||
token_to_read = 0;
|
||||
|
||||
***************
|
||||
*** 7043,7052 ****
|
||||
--- 7046,7059 ----
|
||||
|
||||
/* rhs */
|
||||
+ #if defined (EXTENDED_GLOB)
|
||||
local_extglob = extended_glob;
|
||||
if (parser_state & PST_EXTPAT)
|
||||
extended_glob = 1;
|
||||
+ #endif
|
||||
tok = read_token (READ);
|
||||
+ #if defined (EXTENDED_GLOB)
|
||||
if (parser_state & PST_EXTPAT)
|
||||
extended_glob = local_extglob;
|
||||
+ #endif
|
||||
parser_state &= ~(PST_REGEXP|PST_EXTPAT);
|
||||
|
||||
***************
|
||||
*** 7095,7099 ****
|
||||
COND_COM *cexp;
|
||||
|
||||
- global_extglob = extended_glob;
|
||||
cexp = cond_expr ();
|
||||
return (make_cond_command (cexp));
|
||||
--- 7102,7105 ----
|
||||
*** ../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 11
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 12
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -0,0 +1,58 @@
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 5.2
|
||||
Patch-ID: bash52-013
|
||||
|
||||
Bug-Reported-by: Ralf Oehler <Ralf@Oehler-Privat.de>
|
||||
Bug-Reference-ID: <20221120140252.2fc6489b@bilbo>
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-11/msg00082.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Bash can leak memory when referencing a non-existent associative array
|
||||
element.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** ../bash-5.2-patched/subst.c 2022-11-05 17:27:48.000000000 -0400
|
||||
--- subst.c 2022-11-21 14:42:59.000000000 -0500
|
||||
***************
|
||||
*** 7498,7503 ****
|
||||
: quote_escapes (temp);
|
||||
rflags |= W_ARRAYIND;
|
||||
- if (estatep)
|
||||
- *estatep = es; /* structure copy */
|
||||
}
|
||||
/* Note that array[*] and array[@] expanded to a quoted null string by
|
||||
--- 7508,7511 ----
|
||||
***************
|
||||
*** 7508,7512 ****
|
||||
rflags |= W_HASQUOTEDNULL;
|
||||
|
||||
! if (estatep == 0)
|
||||
flush_eltstate (&es);
|
||||
}
|
||||
--- 7516,7522 ----
|
||||
rflags |= W_HASQUOTEDNULL;
|
||||
|
||||
! if (estatep)
|
||||
! *estatep = es; /* structure copy */
|
||||
! else
|
||||
flush_eltstate (&es);
|
||||
}
|
||||
*** ../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 12
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 13
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -0,0 +1,119 @@
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 5.2
|
||||
Patch-ID: bash52-014
|
||||
|
||||
Bug-Reported-by: Andreas Schwab <schwab@suse.de>
|
||||
Bug-Reference-ID: <mvmv8opcbha.fsf@suse.de>
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00076.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
Bash defers processing additional terminating signals when running the
|
||||
EXIT trap while exiting due to a terminating signal. This patch allows the
|
||||
new terminating signal to kill the shell immediately.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** ../bash-5.2-patched/execute_cmd.c 2022-11-23 17:09:18.000000000 -0500
|
||||
--- execute_cmd.c 2022-11-28 10:36:08.000000000 -0500
|
||||
***************
|
||||
*** 3625,3628 ****
|
||||
--- 3649,3653 ----
|
||||
|
||||
dispose_words (es);
|
||||
+ QUIT;
|
||||
|
||||
if (match)
|
||||
*** ../bash-5.2-patched/sig.c 2021-11-04 14:15:31.000000000 -0400
|
||||
--- sig.c 2022-12-06 09:45:11.000000000 -0500
|
||||
***************
|
||||
*** 95,98 ****
|
||||
--- 95,99 ----
|
||||
|
||||
static void initialize_shell_signals PARAMS((void));
|
||||
+ static void kill_shell PARAMS((int));
|
||||
|
||||
void
|
||||
***************
|
||||
*** 487,490 ****
|
||||
--- 495,500 ----
|
||||
}
|
||||
|
||||
+ static int handling_termsig = 0;
|
||||
+
|
||||
sighandler
|
||||
termsig_sighandler (sig)
|
||||
***************
|
||||
*** 533,536 ****
|
||||
--- 543,554 ----
|
||||
terminate_immediately = 1;
|
||||
|
||||
+ /* If we are currently handling a terminating signal, we have a couple of
|
||||
+ choices here. We can ignore this second terminating signal and let the
|
||||
+ shell exit from the first one, or we can exit immediately by killing
|
||||
+ the shell with this signal. This code implements the latter; to implement
|
||||
+ the former, replace the kill_shell(sig) with return. */
|
||||
+ if (handling_termsig)
|
||||
+ kill_shell (sig); /* just short-circuit now */
|
||||
+
|
||||
terminating_signal = sig;
|
||||
|
||||
***************
|
||||
*** 565,572 ****
|
||||
int sig;
|
||||
{
|
||||
- static int handling_termsig = 0;
|
||||
- int i, core;
|
||||
- sigset_t mask;
|
||||
-
|
||||
/* Simple semaphore to keep this function from being executed multiple
|
||||
times. Since we no longer are running as a signal handler, we don't
|
||||
--- 585,588 ----
|
||||
***************
|
||||
*** 574,578 ****
|
||||
if (handling_termsig)
|
||||
return;
|
||||
! handling_termsig = 1;
|
||||
terminating_signal = 0; /* keep macro from re-testing true. */
|
||||
|
||||
--- 590,595 ----
|
||||
if (handling_termsig)
|
||||
return;
|
||||
!
|
||||
! handling_termsig = terminating_signal; /* for termsig_sighandler */
|
||||
terminating_signal = 0; /* keep macro from re-testing true. */
|
||||
|
||||
***************
|
||||
*** 614,617 ****
|
||||
--- 631,644 ----
|
||||
run_exit_trap (); /* XXX - run exit trap possibly in signal context? */
|
||||
|
||||
+ kill_shell (sig);
|
||||
+ }
|
||||
+
|
||||
+ static void
|
||||
+ kill_shell (sig)
|
||||
+ int sig;
|
||||
+ {
|
||||
+ int i, core;
|
||||
+ sigset_t mask;
|
||||
+
|
||||
/* We don't change the set of blocked signals. If a user starts the shell
|
||||
with a terminating signal blocked, we won't get here (and if by some
|
||||
*** ../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 13
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 14
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -0,0 +1,216 @@
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 5.2
|
||||
Patch-ID: bash52-015
|
||||
|
||||
Bug-Reported-by: Frode Nordahl <frode.nordahl@canonical.com>
|
||||
Bug-Reference-ID: <20221119070714.351759-1-frode.nordahl@canonical.com>
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-11/msg00078.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
There are several cases where bash is too aggressive when optimizing out forks
|
||||
in subshells. For example, `eval' and traps should never be optimized.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** ../bash-5.2-patched/builtins/common.h 2022-11-23 17:09:18.000000000 -0500
|
||||
--- builtins/common.h 2022-11-19 18:03:59.000000000 -0500
|
||||
***************
|
||||
*** 52,55 ****
|
||||
--- 52,56 ----
|
||||
#define SEVAL_ONECMD 0x100 /* only allow a single command */
|
||||
#define SEVAL_NOHISTEXP 0x200 /* inhibit history expansion */
|
||||
+ #define SEVAL_NOOPTIMIZE 0x400 /* don't try to set optimization flags */
|
||||
|
||||
/* Flags for describe_command, shared between type.def and command.def */
|
||||
*** ../bash-5.2-patched/builtins/evalstring.c 2022-11-05 17:27:44.000000000 -0400
|
||||
--- builtins/evalstring.c 2022-11-19 18:23:21.000000000 -0500
|
||||
***************
|
||||
*** 133,138 ****
|
||||
(command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') &&
|
||||
(command->value.Connection->second->flags & CMD_TRY_OPTIMIZING) &&
|
||||
! ((startup_state == 2 && should_suppress_fork (command->value.Connection->second)) ||
|
||||
! ((subshell_environment & SUBSHELL_PAREN) && should_optimize_fork (command->value.Connection->second, 0))))
|
||||
{
|
||||
command->value.Connection->second->flags |= CMD_NO_FORK;
|
||||
--- 133,138 ----
|
||||
(command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') &&
|
||||
(command->value.Connection->second->flags & CMD_TRY_OPTIMIZING) &&
|
||||
! (should_suppress_fork (command->value.Connection->second) ||
|
||||
! ((subshell_environment & SUBSHELL_PAREN) && should_optimize_fork (command->value.Connection->second, 0))))
|
||||
{
|
||||
command->value.Connection->second->flags |= CMD_NO_FORK;
|
||||
***************
|
||||
*** 291,294 ****
|
||||
--- 291,295 ----
|
||||
(flags & SEVAL_RESETLINE) -> reset line_number to 1
|
||||
(flags & SEVAL_NOHISTEXP) -> history_expansion_inhibited -> 1
|
||||
+ (flags & SEVAL_NOOPTIMIZE) -> don't try to turn on optimizing flags
|
||||
*/
|
||||
|
||||
***************
|
||||
*** 503,507 ****
|
||||
series of connection commands is
|
||||
command->value.Connection->second. */
|
||||
! else if (command->type == cm_connection && can_optimize_connection (command))
|
||||
{
|
||||
command->value.Connection->second->flags |= CMD_TRY_OPTIMIZING;
|
||||
--- 504,510 ----
|
||||
series of connection commands is
|
||||
command->value.Connection->second. */
|
||||
! else if (command->type == cm_connection &&
|
||||
! (flags & SEVAL_NOOPTIMIZE) == 0 &&
|
||||
! can_optimize_connection (command))
|
||||
{
|
||||
command->value.Connection->second->flags |= CMD_TRY_OPTIMIZING;
|
||||
*** ../bash-5.2-patched/builtins/eval.def 2016-01-25 13:28:37.000000000 -0500
|
||||
--- builtins/eval.def 2022-11-19 18:04:25.000000000 -0500
|
||||
***************
|
||||
*** 54,57 ****
|
||||
list = loptend; /* skip over possible `--' */
|
||||
|
||||
! return (list ? evalstring (string_list (list), "eval", SEVAL_NOHIST) : EXECUTION_SUCCESS);
|
||||
}
|
||||
--- 54,57 ----
|
||||
list = loptend; /* skip over possible `--' */
|
||||
|
||||
! return (list ? evalstring (string_list (list), "eval", SEVAL_NOHIST|SEVAL_NOOPTIMIZE) : EXECUTION_SUCCESS);
|
||||
}
|
||||
*** ../bash-5.2-patched/trap.c 2022-08-10 08:59:45.000000000 -0400
|
||||
--- trap.c 2022-12-12 10:57:51.000000000 -0500
|
||||
***************
|
||||
*** 305,308 ****
|
||||
--- 305,309 ----
|
||||
volatile int save_return_catch_flag, function_code;
|
||||
procenv_t save_return_catch;
|
||||
+ char *trap_command, *old_trap;
|
||||
#if defined (ARRAY_VARS)
|
||||
ARRAY *ps;
|
||||
***************
|
||||
*** 420,423 ****
|
||||
--- 421,427 ----
|
||||
else
|
||||
{
|
||||
+ old_trap = trap_list[sig];
|
||||
+ trap_command = savestring (old_trap);
|
||||
+
|
||||
save_parser_state (&pstate);
|
||||
save_subst_varlist = subst_assign_varlist;
|
||||
***************
|
||||
*** 442,446 ****
|
||||
|
||||
if (function_code == 0)
|
||||
! x = parse_and_execute (savestring (trap_list[sig]), "trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE);
|
||||
else
|
||||
{
|
||||
--- 446,451 ----
|
||||
|
||||
if (function_code == 0)
|
||||
! /* XXX is x always last_command_exit_value? */
|
||||
! x = parse_and_execute (trap_command, "trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE|SEVAL_NOOPTIMIZE);
|
||||
else
|
||||
{
|
||||
***************
|
||||
*** 1003,1007 ****
|
||||
{
|
||||
reset_parser ();
|
||||
! parse_and_execute (trap_command, "exit trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE);
|
||||
}
|
||||
else if (code == ERREXIT)
|
||||
--- 1008,1012 ----
|
||||
{
|
||||
reset_parser ();
|
||||
! parse_and_execute (trap_command, "exit trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE|SEVAL_NOOPTIMIZE);
|
||||
}
|
||||
else if (code == ERREXIT)
|
||||
***************
|
||||
*** 1110,1114 ****
|
||||
}
|
||||
|
||||
! flags = SEVAL_NONINT|SEVAL_NOHIST;
|
||||
if (sig != DEBUG_TRAP && sig != RETURN_TRAP && sig != ERROR_TRAP)
|
||||
flags |= SEVAL_RESETLINE;
|
||||
--- 1115,1119 ----
|
||||
}
|
||||
|
||||
! flags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOOPTIMIZE;
|
||||
if (sig != DEBUG_TRAP && sig != RETURN_TRAP && sig != ERROR_TRAP)
|
||||
flags |= SEVAL_RESETLINE;
|
||||
*** ../bash-5.2-patched/parse.y 2022-11-23 17:09:18.000000000 -0500
|
||||
--- parse.y 2022-11-19 18:15:34.000000000 -0500
|
||||
***************
|
||||
*** 2828,2832 ****
|
||||
last_lastarg = savestring (last_lastarg);
|
||||
|
||||
! parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST);
|
||||
|
||||
restore_parser_state (&ps);
|
||||
--- 2844,2848 ----
|
||||
last_lastarg = savestring (last_lastarg);
|
||||
|
||||
! parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOOPTIMIZE);
|
||||
|
||||
restore_parser_state (&ps);
|
||||
*** ../bash-5.2-patched/jobs.c 2022-07-18 10:19:56.000000000 -0400
|
||||
--- jobs.c 2022-11-19 18:10:24.000000000 -0500
|
||||
***************
|
||||
*** 4221,4225 ****
|
||||
for (i = 0; i < nchild; i++)
|
||||
{
|
||||
! parse_and_execute (savestring (trap_command), "trap", SEVAL_NOHIST|SEVAL_RESETLINE);
|
||||
}
|
||||
|
||||
--- 4243,4247 ----
|
||||
for (i = 0; i < nchild; i++)
|
||||
{
|
||||
! parse_and_execute (savestring (trap_command), "trap", SEVAL_NOHIST|SEVAL_RESETLINE|SEVAL_NOOPTIMIZE);
|
||||
}
|
||||
|
||||
*** ../bash-5.2-patched/y.tab.c 2022-11-23 17:09:18.000000000 -0500
|
||||
--- y.tab.c 2022-11-23 17:21:17.000000000 -0500
|
||||
***************
|
||||
*** 5139,5143 ****
|
||||
last_lastarg = savestring (last_lastarg);
|
||||
|
||||
! parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST);
|
||||
|
||||
restore_parser_state (&ps);
|
||||
--- 5154,5158 ----
|
||||
last_lastarg = savestring (last_lastarg);
|
||||
|
||||
! parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOOPTIMIZE);
|
||||
|
||||
restore_parser_state (&ps);
|
||||
*** ../bash-5.2-patched/execute_cmd.c 2022-11-05 17:27:41.000000000 -0400
|
||||
--- execute_cmd.c 2022-11-22 17:09:38.000000000 -0500
|
||||
***************
|
||||
*** 1655,1659 ****
|
||||
and set CMD_TRY_OPTIMIZING for simple commands on the right side of an
|
||||
and-or or `;' list to test for optimizing forks when they are executed. */
|
||||
! if (user_subshell && command->type == cm_subshell)
|
||||
optimize_subshell_command (command->value.Subshell->command);
|
||||
|
||||
--- 1665,1670 ----
|
||||
and set CMD_TRY_OPTIMIZING for simple commands on the right side of an
|
||||
and-or or `;' list to test for optimizing forks when they are executed. */
|
||||
! if (user_subshell && command->type == cm_subshell &&
|
||||
! (command->flags & (CMD_TIME_PIPELINE|CMD_INVERT_RETURN)) == 0)
|
||||
optimize_subshell_command (command->value.Subshell->command);
|
||||
|
||||
*** ../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 14
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- 26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 15
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
+25
-11
@@ -12,24 +12,31 @@
|
||||
<IsA>app:console</IsA>
|
||||
<Summary>The standard GNU Bourne again shell</Summary>
|
||||
<Description>Bash is the GNU Project's Bourne Again SHell, a complete implementation of the IEEE POSIX and Open Group shell specification with interactive command line editing, csh-like features such as history substitution.</Description>
|
||||
<Archive sha1sum="dc46d863c0410d9252f8fc3d356e47809b4bc46d" type="targz">mirrors://gnu/bash/bash-5.1.16.tar.gz</Archive>
|
||||
<Archive sha1sum="a799460be16c01aeab492b9aa88f5eb7f35c1b9b" type="targz">mirrors://gnu/bash/bash-5.2.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>ncurses-devel</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<!-- Official Patches -->
|
||||
|
||||
<!-- <Patch>official/bash51-001.patch</Patch>
|
||||
<Patch>official/bash51-002.patch</Patch>
|
||||
<Patch>official/bash51-003.patch</Patch>
|
||||
<Patch>official/bash51-004.patch</Patch>
|
||||
<Patch>official/bash51-005.patch</Patch>
|
||||
<Patch>official/bash51-006.patch</Patch>
|
||||
<Patch>official/bash51-007.patch</Patch>
|
||||
<Patch>official/bash51-008.patch</Patch>-->
|
||||
<Patch>official/bash52-001.patch</Patch>
|
||||
<Patch>official/bash52-002.patch</Patch>
|
||||
<Patch>official/bash52-003.patch</Patch>
|
||||
<Patch>official/bash52-004.patch</Patch>
|
||||
<Patch>official/bash52-005.patch</Patch>
|
||||
<Patch>official/bash52-006.patch</Patch>
|
||||
<Patch>official/bash52-007.patch</Patch>
|
||||
<Patch>official/bash52-008.patch</Patch>
|
||||
<Patch>official/bash52-009.patch</Patch>
|
||||
<Patch>official/bash52-010.patch</Patch>
|
||||
<Patch>official/bash52-011.patch</Patch>
|
||||
<Patch>official/bash52-012.patch</Patch>
|
||||
<Patch>official/bash52-013.patch</Patch>
|
||||
<Patch>official/bash52-014.patch</Patch>
|
||||
<Patch>official/bash52-015.patch</Patch>
|
||||
|
||||
<!-- Fedora patches -->
|
||||
<Patch level="1">fedora/bash-2.03-paths.patch</Patch>
|
||||
<!-- <Patch level="1">fedora/bash-2.03-paths.patch</Patch> -->
|
||||
<Patch level="1">fedora/bash-2.03-profile.patch</Patch>
|
||||
<Patch level="1">fedora/bash-2.05a-interpreter.patch</Patch>
|
||||
<Patch level="1">fedora/bash-2.05b-debuginfo.patch</Patch>
|
||||
@@ -47,7 +54,7 @@
|
||||
<Patch level="1">fedora/bash-4.3-memleak-lc_all.patch</Patch>
|
||||
<Patch level="1">fedora/bash-4.3-noecho.patch</Patch>
|
||||
<Patch level="1">fedora/bash-4.4-no-loadable-builtins.patch</Patch>
|
||||
<Patch level="1">fedora/bash-infotags.patch</Patch>
|
||||
<Patch level="1">fedora/bash-5.0-syslog-history.patch</Patch>
|
||||
<Patch level="1">fedora/bash-requires.patch</Patch>
|
||||
<Patch level="1">fedora/bash-setlocale.patch</Patch>
|
||||
<Patch level="1">fedora/bash-tty-tests.patch</Patch>
|
||||
@@ -76,6 +83,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="13">
|
||||
<Date>2022-12-15</Date>
|
||||
<Version>5.2.15</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Mustafa Cinasal</Name>
|
||||
<Email>muscnsl@gmail.com</Email>
|
||||
</Update>
|
||||
<Update release="12">
|
||||
<Date>2022-05-05</Date>
|
||||
<Version>5.1.16</Version>
|
||||
|
||||
Reference in New Issue
Block a user