Signed-off-by: Marcel Denia <naoir@gmx.net>lilik-openwrt-22.03
@ -0,0 +1,38 @@ | |||
BASH PATCH REPORT | |||
================= | |||
Bash-Release: 4.3 | |||
Patch-ID: bash43-040 | |||
Bug-Reported-by: Jean Delvare <jdelvare@suse.de> | |||
Bug-Reference-ID: <20150609180231.5f463695@endymion.delvare> | |||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00033.html | |||
Bug-Description: | |||
There is a memory leak that occurs when bash expands an array reference on | |||
the rhs of an assignment statement. | |||
Patch (apply with `patch -p0'): | |||
--- a/subst.c | |||
+++ b/subst.c | |||
@@ -5782,7 +5782,7 @@ expand_arrayref: | |||
/* XXX - does this leak if name[@] or name[*]? */ | |||
if (pflags & PF_ASSIGNRHS) | |||
{ | |||
- temp = array_variable_name (name, &tt, (int *)0); | |||
+ var = array_variable_part (name, &tt, (int *)0); | |||
if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']') | |||
temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind); | |||
else | |||
--- a/patchlevel.h | |||
+++ b/patchlevel.h | |||
@@ -25,6 +25,6 @@ | |||
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh | |||
looks for to find the patch level (for the sccs version string). */ | |||
-#define PATCHLEVEL 39 | |||
+#define PATCHLEVEL 40 | |||
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,67 @@ | |||
BASH PATCH REPORT | |||
================= | |||
Bash-Release: 4.3 | |||
Patch-ID: bash43-041 | |||
Bug-Reported-by: Hanno Böck <hanno@hboeck.de> | |||
Bug-Reference-ID: <20150623131106.6f111da9@pc1>, <20150707004640.0e61d2f9@pc1> | |||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00089.html, | |||
http://lists.gnu.org/archive/html/bug-bash/2015-07/msg00018.html | |||
Bug-Description: | |||
There are several out-of-bounds read errors that occur when completing command | |||
lines where assignment statements appear before the command name. The first | |||
two appear only when programmable completion is enabled; the last one only | |||
happens when listing possible completions. | |||
Patch (apply with `patch -p0'): | |||
--- a/bashline.c | |||
+++ b/bashline.c | |||
@@ -1468,10 +1468,23 @@ attempt_shell_completion (text, start, e | |||
os = start; | |||
n = 0; | |||
+ was_assignment = 0; | |||
s = find_cmd_start (os); | |||
e = find_cmd_end (end); | |||
do | |||
{ | |||
+ /* Don't read past the end of rl_line_buffer */ | |||
+ if (s > rl_end) | |||
+ { | |||
+ s1 = s = e1; | |||
+ break; | |||
+ } | |||
+ /* Or past point if point is within an assignment statement */ | |||
+ else if (was_assignment && s > rl_point) | |||
+ { | |||
+ s1 = s = e1; | |||
+ break; | |||
+ } | |||
/* Skip over assignment statements preceding a command name. If we | |||
don't find a command name at all, we can perform command name | |||
completion. If we find a partial command name, we should perform | |||
--- a/lib/readline/complete.c | |||
+++ b/lib/readline/complete.c | |||
@@ -689,6 +689,8 @@ printable_part (pathname) | |||
if (temp == 0 || *temp == '\0') | |||
return (pathname); | |||
+ else if (temp[1] == 0 && temp == pathname) | |||
+ return (pathname); | |||
/* If the basename is NULL, we might have a pathname like '/usr/src/'. | |||
Look for a previous slash and, if one is found, return the portion | |||
following that slash. If there's no previous slash, just return the | |||
--- a/patchlevel.h | |||
+++ b/patchlevel.h | |||
@@ -25,6 +25,6 @@ | |||
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh | |||
looks for to find the patch level (for the sccs version string). */ | |||
-#define PATCHLEVEL 40 | |||
+#define PATCHLEVEL 41 | |||
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,50 @@ | |||
BASH PATCH REPORT | |||
================= | |||
Bash-Release: 4.3 | |||
Patch-ID: bash43-042 | |||
Bug-Reported-by: Nathan Neulinger <nneul@neulinger.org> | |||
Bug-Reference-ID: <558EFDF2.7060402@neulinger.org> | |||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00096.html | |||
Bug-Description: | |||
There is a problem when parsing command substitutions containing `case' | |||
commands within pipelines that causes the parser to not correctly identify | |||
the end of the command substitution. | |||
Patch (apply with `patch -p0'): | |||
--- a/parse.y | |||
+++ b/parse.y | |||
@@ -3708,6 +3708,8 @@ eof_error: | |||
/*itrace("parse_comsub:%d: lex_inword -> 1 ch = `%c' (%d)", line_number, ch, __LINE__);*/ | |||
tflags |= LEX_INWORD; | |||
lex_wlen = 0; | |||
+ if (tflags & LEX_RESWDOK) | |||
+ lex_rwlen = 0; | |||
} | |||
} | |||
--- a/y.tab.c | |||
+++ b/y.tab.c | |||
@@ -6020,6 +6020,8 @@ eof_error: | |||
/*itrace("parse_comsub:%d: lex_inword -> 1 ch = `%c' (%d)", line_number, ch, __LINE__);*/ | |||
tflags |= LEX_INWORD; | |||
lex_wlen = 0; | |||
+ if (tflags & LEX_RESWDOK) | |||
+ lex_rwlen = 0; | |||
} | |||
} | |||
--- a/patchlevel.h | |||
+++ b/patchlevel.h | |||
@@ -25,6 +25,6 @@ | |||
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh | |||
looks for to find the patch level (for the sccs version string). */ | |||
-#define PATCHLEVEL 41 | |||
+#define PATCHLEVEL 42 | |||
#endif /* _PATCHLEVEL_H_ */ |