Signed-off-by: Peter Müller peter.mueller@ipfire.org --- lfs/bash | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/lfs/bash b/lfs/bash index 09b4e71e6..79c21896b 100644 --- a/lfs/bash +++ b/lfs/bash @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2018 IPFire Team info@ipfire.org # +# Copyright (C) 2007-2019 IPFire Team info@ipfire.org # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@
include Config
-VER = 4.3 +VER = 5.0
THISAPP = bash-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -53,7 +53,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 81348932d5da294953e15d4814c74dd1 +$(DL_FILE)_MD5 = 2b44b47b905be16f45709648f671820b
install : $(TARGET)
@@ -87,8 +87,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) sed -e "s/filename, RTLD_LAZY/filename, RTLD_NOW/" \ -i $(DIR_APP)/builtins/enable.def
- for i in $$(seq 1 30); do \ - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash43-$$(printf "%03d" "$${i}") || exit 1; \ + for i in $$(seq 1 11); do \ + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash50-$$(printf "%03d" "$${i}") || exit 1; \ done
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash-4.0-paths-1.patch
Signed-off-by: Peter Müller peter.mueller@ipfire.org --- lfs/readline | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/lfs/readline b/lfs/readline index 3e9e2a3d5..4f7329766 100644 --- a/lfs/readline +++ b/lfs/readline @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2018 IPFire Team info@ipfire.org # +# Copyright (C) 2007-2019 IPFire Team info@ipfire.org # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@
include Config
-VER = 6.3 +VER = 8.0
THISAPP = readline-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 33c8fb279e981274f485fd91da77e94a +$(DL_FILE)_MD5 = 7e6c1f16aee3244a69aba6e438295ca3
install : $(TARGET)
@@ -71,9 +71,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
- for i in $$(seq 1 6); do \ - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/readline/readline63-$$(printf "%03d" "$${i}") || exit 1; \ - done + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/readline/readline80-001
cd $(DIR_APP) && ./configure --prefix=/usr --disable-static cd $(DIR_APP) && make $(MAKETUNING) SHLIB_LIBS=-lncurses
Signed-off-by: Peter Müller peter.mueller@ipfire.org --- config/rootfiles/common/bash | 5 +++++ config/rootfiles/common/readline | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/config/rootfiles/common/bash b/config/rootfiles/common/bash index 84f587f3c..27344c31b 100644 --- a/config/rootfiles/common/bash +++ b/config/rootfiles/common/bash @@ -1,6 +1,9 @@ bin/sh bin/bash #bin/bashbug +#usr/lib/bash +#usr/lib/pkgconfig/bash.pc +#usr/include/bash #usr/share/doc/bash #usr/share/doc/bash/CHANGES #usr/share/doc/bash/COMPAT @@ -39,8 +42,10 @@ bin/bash #usr/share/locale/it/LC_MESSAGES/bash.mo #usr/share/locale/ja/LC_MESSAGES/bash.mo #usr/share/locale/lt/LC_MESSAGES/bash.mo +#usr/share/locale/nb/LC_MESSAGES/bash.mo #usr/share/locale/nl/LC_MESSAGES/bash.mo #usr/share/locale/pl/LC_MESSAGES/bash.mo +#usr/share/locale/pt/LC_MESSAGES/bash.mo #usr/share/locale/pt_BR/LC_MESSAGES/bash.mo #usr/share/locale/ro/LC_MESSAGES/bash.mo #usr/share/locale/ru/LC_MESSAGES/bash.mo diff --git a/config/rootfiles/common/readline b/config/rootfiles/common/readline index b2ac26dd4..3fecb6805 100644 --- a/config/rootfiles/common/readline +++ b/config/rootfiles/common/readline @@ -8,11 +8,11 @@ #usr/include/readline/rltypedefs.h #usr/include/readline/tilde.h #usr/lib/libhistory.so -usr/lib/libhistory.so.6 -usr/lib/libhistory.so.6.3 +usr/lib/libhistory.so.8 +usr/lib/libhistory.so.8.0 #usr/lib/libreadline.so -usr/lib/libreadline.so.6 -usr/lib/libreadline.so.6.3 +usr/lib/libreadline.so.8 +usr/lib/libreadline.so.8.0 #usr/share/doc/readline #usr/share/doc/readline/CHANGES #usr/share/doc/readline/INSTALL
Signed-off-by: Peter Müller peter.mueller@ipfire.org --- src/patches/bash/bash50-001 | 166 ++++++++++++++++++++++++++++++ src/patches/bash/bash50-002 | 113 +++++++++++++++++++++ src/patches/bash/bash50-003 | 239 ++++++++++++++++++++++++++++++++++++++++++++ src/patches/bash/bash50-004 | 53 ++++++++++ src/patches/bash/bash50-005 | 110 ++++++++++++++++++++ src/patches/bash/bash50-006 | 47 +++++++++ src/patches/bash/bash50-007 | 62 ++++++++++++ src/patches/bash/bash50-008 | 68 +++++++++++++ src/patches/bash/bash50-009 | 42 ++++++++ src/patches/bash/bash50-010 | 172 +++++++++++++++++++++++++++++++ src/patches/bash/bash50-011 | 59 +++++++++++ 11 files changed, 1131 insertions(+) create mode 100644 src/patches/bash/bash50-001 create mode 100644 src/patches/bash/bash50-002 create mode 100644 src/patches/bash/bash50-003 create mode 100644 src/patches/bash/bash50-004 create mode 100644 src/patches/bash/bash50-005 create mode 100644 src/patches/bash/bash50-006 create mode 100644 src/patches/bash/bash50-007 create mode 100644 src/patches/bash/bash50-008 create mode 100644 src/patches/bash/bash50-009 create mode 100644 src/patches/bash/bash50-010 create mode 100644 src/patches/bash/bash50-011
diff --git a/src/patches/bash/bash50-001 b/src/patches/bash/bash50-001 new file mode 100644 index 000000000..169317ded --- /dev/null +++ b/src/patches/bash/bash50-001 @@ -0,0 +1,166 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.0 +Patch-ID: bash50-001 + +Bug-Reported-by: axel@freakout.de +Bug-Reference-ID: 201901082050.x08KoShS006731@bongo.freakout.de +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-01/msg00079.html + +Bug-Description: + +Under certain circumstances, the glob expansion code did not remove +backslashes escaping characters in directory names (or portions of a +pattern preceding a slash). + +Patch (apply with `patch -p0'): + +*** ../bash-5.0/bashline.c 2018-11-27 13:20:16.000000000 -0500 +--- bashline.c 2019-01-16 16:06:03.000000000 -0500 +*************** +*** 232,235 **** +--- 232,236 ---- + static int bash_possible_command_completions __P((int, int)); + ++ static int completion_glob_pattern __P((char *)); + static char *glob_complete_word __P((const char *, int)); + static int bash_glob_completion_internal __P((int)); +*************** +*** 1742,1746 **** + /* This could be a globbing pattern, so try to expand it using pathname + expansion. */ +! if (!matches && glob_pattern_p (text)) + { + matches = rl_completion_matches (text, glob_complete_word); +--- 1743,1747 ---- + /* This could be a globbing pattern, so try to expand it using pathname + expansion. */ +! if (!matches && completion_glob_pattern ((char *)text)) + { + matches = rl_completion_matches (text, glob_complete_word); +*************** +*** 1851,1855 **** + } + +! globpat = glob_pattern_p (hint_text); + + /* If this is an absolute program name, do not check it against +--- 1852,1856 ---- + } + +! globpat = completion_glob_pattern ((char *)hint_text); + + /* If this is an absolute program name, do not check it against +*************** +*** 3714,3717 **** +--- 3715,3773 ---- + } + ++ static int ++ completion_glob_pattern (string) ++ char *string; ++ { ++ register int c; ++ char *send; ++ int open; ++ ++ DECLARE_MBSTATE; ++ ++ open = 0; ++ send = string + strlen (string); ++ ++ while (c = *string++) ++ { ++ switch (c) ++ { ++ case '?': ++ case '*': ++ return (1); ++ ++ case '[': ++ open++; ++ continue; ++ ++ case ']': ++ if (open) ++ return (1); ++ continue; ++ ++ case '+': ++ case '@': ++ case '!': ++ if (*string == '(') /*)*/ ++ return (1); ++ continue; ++ ++ case '\': ++ if (*string == 0) ++ return (0); ++ } ++ ++ /* Advance one fewer byte than an entire multibyte character to ++ account for the auto-increment in the loop above. */ ++ #ifdef HANDLE_MULTIBYTE ++ string--; ++ ADVANCE_CHAR_P (string, send - string); ++ string++; ++ #else ++ ADVANCE_CHAR_P (string, send - string); ++ #endif ++ } ++ return (0); ++ } ++ + static char *globtext; + static char *globorig; +*************** +*** 3878,3882 **** + } + +! if (t && glob_pattern_p (t) == 0) + rl_explicit_arg = 1; /* XXX - force glob_complete_word to append `*' */ + FREE (t); +--- 3934,3938 ---- + } + +! if (t && completion_glob_pattern (t) == 0) + rl_explicit_arg = 1; /* XXX - force glob_complete_word to append `*' */ + FREE (t); +*** ../bash-5.0/lib/glob/glob_loop.c 2018-12-31 13:35:15.000000000 -0500 +--- lib/glob/glob_loop.c 2019-01-09 09:44:36.000000000 -0500 +*************** +*** 55,59 **** + + case L('\'): +- #if 0 + /* Don't let the pattern end in a backslash (GMATCH returns no match + if the pattern ends in a backslash anyway), but otherwise return 1, +--- 55,58 ---- +*************** +*** 61,69 **** + and it can be removed. */ + return (*p != L('\0')); +- #else +- /* The pattern may not end with a backslash. */ +- if (*p++ == L('\0')) +- return 0; +- #endif + } + +--- 60,63 ---- +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 0 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 1 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-002 b/src/patches/bash/bash50-002 new file mode 100644 index 000000000..3fc8272f8 --- /dev/null +++ b/src/patches/bash/bash50-002 @@ -0,0 +1,113 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.0 +Patch-ID: bash50-002 + +Bug-Reported-by: Ante Peric synthmeat@gmail.com +Bug-Reference-ID: B7E3B567-2467-4F7B-B6B9-CA4E75A9C93F@gmail.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-01/msg00095.html + +Bug-Description: + +When an alias value ends with an unquoted literal tab (not part of a quoted +string or comment), alias expansion cannot correctly detect the end of the +alias value after expanding it. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0/parser.h 2018-12-28 19:11:18.000000000 -0500 +--- parser.h 2019-01-11 15:13:03.000000000 -0500 +*************** +*** 48,51 **** +--- 48,52 ---- + #define PST_REDIRLIST 0x080000 /* parsing a list of redirections preceding a simple command name */ + #define PST_COMMENT 0x100000 /* parsing a shell comment; used by aliases */ ++ #define PST_ENDALIAS 0x200000 /* just finished expanding and consuming an alias */ + + /* Definition of the delimiter stack. Needed by parse.y and bashhist.c. */ +*** ../bash-5.0/parse.y 2019-01-02 13:57:34.000000000 -0500 +--- parse.y 2019-01-14 08:23:31.000000000 -0500 +*************** +*** 2558,2567 **** + pushed_string_list->flags != PSH_DPAREN && + (parser_state & PST_COMMENT) == 0 && + shell_input_line_index > 0 && +! shell_input_line[shell_input_line_index-1] != ' ' && + shell_input_line[shell_input_line_index-1] != '\n' && + shellmeta (shell_input_line[shell_input_line_index-1]) == 0 && + (current_delimiter (dstack) != ''' && current_delimiter (dstack) != '"')) + { + return ' '; /* END_ALIAS */ + } +--- 2558,2569 ---- + pushed_string_list->flags != PSH_DPAREN && + (parser_state & PST_COMMENT) == 0 && ++ (parser_state & PST_ENDALIAS) == 0 && /* only once */ + shell_input_line_index > 0 && +! shellblank (shell_input_line[shell_input_line_index-1]) == 0 && + shell_input_line[shell_input_line_index-1] != '\n' && + shellmeta (shell_input_line[shell_input_line_index-1]) == 0 && + (current_delimiter (dstack) != ''' && current_delimiter (dstack) != '"')) + { ++ parser_state |= PST_ENDALIAS; + return ' '; /* END_ALIAS */ + } +*************** +*** 2572,2575 **** +--- 2574,2578 ---- + if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE) + { ++ parser_state &= ~PST_ENDALIAS; + pop_string (); + uc = shell_input_line[shell_input_line_index]; +*** ../bash-5.0/y.tab.c 2019-01-02 13:57:43.000000000 -0500 +--- y.tab.c 2019-01-14 08:39:23.000000000 -0500 +*************** +*** 4874,4883 **** + pushed_string_list->flags != PSH_DPAREN && + (parser_state & PST_COMMENT) == 0 && + shell_input_line_index > 0 && +! shell_input_line[shell_input_line_index-1] != ' ' && + shell_input_line[shell_input_line_index-1] != '\n' && + shellmeta (shell_input_line[shell_input_line_index-1]) == 0 && + (current_delimiter (dstack) != ''' && current_delimiter (dstack) != '"')) + { + return ' '; /* END_ALIAS */ + } +--- 4874,4885 ---- + pushed_string_list->flags != PSH_DPAREN && + (parser_state & PST_COMMENT) == 0 && ++ (parser_state & PST_ENDALIAS) == 0 && /* only once */ + shell_input_line_index > 0 && +! shellblank (shell_input_line[shell_input_line_index-1]) == 0 && + shell_input_line[shell_input_line_index-1] != '\n' && + shellmeta (shell_input_line[shell_input_line_index-1]) == 0 && + (current_delimiter (dstack) != ''' && current_delimiter (dstack) != '"')) + { ++ parser_state |= PST_ENDALIAS; + return ' '; /* END_ALIAS */ + } +*************** +*** 4888,4891 **** +--- 4890,4894 ---- + if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE) + { ++ parser_state &= ~PST_ENDALIAS; + pop_string (); + uc = shell_input_line[shell_input_line_index]; +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 1 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 2 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-003 b/src/patches/bash/bash50-003 new file mode 100644 index 000000000..f7e5677e5 --- /dev/null +++ b/src/patches/bash/bash50-003 @@ -0,0 +1,239 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.0 +Patch-ID: bash50-003 + +Bug-Reported-by: Andrew Church achurch+bash@achurch.org +Bug-Reference-ID: 5c534aa2.04371@msgid.achurch.org +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-01/msg00276.html + +Bug-Description: + +There are several incompatibilities in how bash-5.0 processes pathname +expansion (globbing) of filename arguments that have backslashes in the +directory portion. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/lib/glob/glob_loop.c 2019-01-16 16:13:21.000000000 -0500 +--- lib/glob/glob_loop.c 2019-02-01 09:45:11.000000000 -0500 +*************** +*** 27,34 **** + register const GCHAR *p; + register GCHAR c; +! int bopen; + + p = pattern; +! bopen = 0; + + while ((c = *p++) != L('\0')) +--- 27,34 ---- + register const GCHAR *p; + register GCHAR c; +! int bopen, bsquote; + + p = pattern; +! bopen = bsquote = 0; + + while ((c = *p++) != L('\0')) +*************** +*** 56,66 **** + case L('\'): + /* Don't let the pattern end in a backslash (GMATCH returns no match +! if the pattern ends in a backslash anyway), but otherwise return 1, +! since the matching engine uses backslash as an escape character +! and it can be removed. */ +! return (*p != L('\0')); + } + +! return 0; + } + +--- 56,75 ---- + case L('\'): + /* Don't let the pattern end in a backslash (GMATCH returns no match +! if the pattern ends in a backslash anyway), but otherwise note that +! we have seen this, since the matching engine uses backslash as an +! escape character and it can be removed. We return 2 later if we +! have seen only backslash-escaped characters, so interested callers +! know they can shortcut and just dequote the pathname. */ +! if (*p != L('\0')) +! { +! p++; +! bsquote = 1; +! continue; +! } +! else /* (*p == L('\0')) */ +! return 0; + } + +! return bsquote ? 2 : 0; + } + +*** ../bash-5.0-patched/lib/glob/glob.h 2013-10-28 14:46:12.000000000 -0400 +--- lib/glob/glob.h 2019-03-07 11:06:47.000000000 -0500 +*************** +*** 31,34 **** +--- 31,35 ---- + #define GX_ADDCURDIR 0x200 /* internal -- add passed directory name */ + #define GX_GLOBSTAR 0x400 /* turn on special handling of ** */ ++ #define GX_RECURSE 0x800 /* internal -- glob_filename called recursively */ + + extern int glob_pattern_p __P((const char *)); +*** ../bash-5.0-patched/lib/glob/glob.c 2018-09-20 10:53:23.000000000 -0400 +--- lib/glob/glob.c 2019-03-07 14:23:43.000000000 -0500 +*************** +*** 1062,1066 **** + unsigned int directory_len; + int free_dirname; /* flag */ +! int dflags; + + result = (char **) malloc (sizeof (char *)); +--- 1078,1082 ---- + unsigned int directory_len; + int free_dirname; /* flag */ +! int dflags, hasglob; + + result = (char **) malloc (sizeof (char *)); +*************** +*** 1111,1117 **** + } + + /* If directory_name contains globbing characters, then we +! have to expand the previous levels. Just recurse. */ +! if (directory_len > 0 && glob_pattern_p (directory_name)) + { + char **directories, *d, *p; +--- 1127,1136 ---- + } + ++ hasglob = 0; + /* If directory_name contains globbing characters, then we +! have to expand the previous levels. Just recurse. +! If glob_pattern_p returns != [0,1] we have a pattern that has backslash +! quotes but no unquoted glob pattern characters. We dequote it below. */ +! if (directory_len > 0 && (hasglob = glob_pattern_p (directory_name)) == 1) + { + char **directories, *d, *p; +*************** +*** 1176,1180 **** + d[directory_len - 1] = '\0'; + +! directories = glob_filename (d, dflags); + + if (free_dirname) +--- 1195,1199 ---- + d[directory_len - 1] = '\0'; + +! directories = glob_filename (d, dflags|GX_RECURSE); + + if (free_dirname) +*************** +*** 1333,1336 **** +--- 1352,1369 ---- + return (NULL); + } ++ /* If we have a directory name with quoted characters, and we are ++ being called recursively to glob the directory portion of a pathname, ++ we need to dequote the directory name before returning it so the ++ caller can read the directory */ ++ if (directory_len > 0 && hasglob == 2 && (flags & GX_RECURSE) != 0) ++ { ++ dequote_pathname (directory_name); ++ directory_len = strlen (directory_name); ++ } ++ ++ /* We could check whether or not the dequoted directory_name is a ++ directory and return it here, returning the original directory_name ++ if not, but we don't do that yet. I'm not sure it matters. */ ++ + /* Handle GX_MARKDIRS here. */ + result[0] = (char *) malloc (directory_len + 1); +*** ../bash-5.0-patched/pathexp.c 2018-04-29 17:44:48.000000000 -0400 +--- pathexp.c 2019-01-31 20:19:41.000000000 -0500 +*************** +*** 66,74 **** + register int c; + char *send; +! int open; + + DECLARE_MBSTATE; + +! open = 0; + send = string + strlen (string); + +--- 66,74 ---- + register int c; + char *send; +! int open, bsquote; + + DECLARE_MBSTATE; + +! open = bsquote = 0; + send = string + strlen (string); + +*************** +*** 101,105 **** + globbing. */ + case '\': +! return (*string != 0); + + case CTLESC: +--- 101,112 ---- + globbing. */ + case '\': +! if (*string != '\0' && *string != '/') +! { +! bsquote = 1; +! string++; +! continue; +! } +! else if (*string == 0) +! return (0); + + case CTLESC: +*************** +*** 118,122 **** + #endif + } +! return (0); + } + +--- 125,130 ---- + #endif + } +! +! return (bsquote ? 2 : 0); + } + +*** ../bash-5.0-patched/bashline.c 2019-01-16 16:13:21.000000000 -0500 +--- bashline.c 2019-02-22 09:29:08.000000000 -0500 +*************** +*** 3753,3757 **** + + case '\': +! if (*string == 0) + return (0); + } +--- 3766,3770 ---- + + case '\': +! if (*string++ == 0) + return (0); + } +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 2 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 3 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-004 b/src/patches/bash/bash50-004 new file mode 100644 index 000000000..fe3c764bd --- /dev/null +++ b/src/patches/bash/bash50-004 @@ -0,0 +1,53 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.0 +Patch-ID: bash50-004 + +Bug-Reported-by: Daniel Kahn Gillmor dkg@fifthhorseman.net +Bug-Reference-ID: 87lg0g8aiw.fsf@fifthhorseman.net +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-04/msg00076.html + +Bug-Description: + +In bash-5.0, the `wait' builtin without arguments waits for all children of the +shell. This includes children it `inherited' at shell invocation time. This +patch modifies the behavior to not wait for these inherited children, some +of which might be long-lived. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/jobs.c 2018-12-06 11:44:34.000000000 -0500 +--- jobs.c 2019-04-12 15:15:10.000000000 -0400 +*************** +*** 2489,2496 **** + wait_procsubs (); + reap_procsubs (); +! #if 1 + /* We don't want to wait indefinitely if we have stopped children. */ +- /* XXX - should add a loop that goes through the list of process +- substitutions and waits for each proc in turn before this code. */ + if (any_stopped == 0) + { +--- 2490,2495 ---- + wait_procsubs (); + reap_procsubs (); +! #if 0 + /* We don't want to wait indefinitely if we have stopped children. */ + if (any_stopped == 0) + { +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 3 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 4 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-005 b/src/patches/bash/bash50-005 new file mode 100644 index 000000000..9b1cd75b0 --- /dev/null +++ b/src/patches/bash/bash50-005 @@ -0,0 +1,110 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.0 +Patch-ID: bash50-005 + +Bug-Reported-by: Brad Spencer bspencer@blackberry.com +Bug-Reference-ID: 1b993ff2-ce4f-662a-6be4-393457362e47@blackberry.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-01/msg00250.html + +Bug-Description: + +In certain cases, bash optimizes out a fork() call too early and prevents +traps from running. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/command.h 2018-07-20 21:16:31.000000000 -0400 +--- command.h 2019-02-20 11:09:36.000000000 -0500 +*************** +*** 187,190 **** +--- 188,192 ---- + #define CMD_LASTPIPE 0x2000 + #define CMD_STDPATH 0x4000 /* use standard path for command lookup */ ++ #define CMD_TRY_OPTIMIZING 0x8000 /* try to optimize this simple command */ + + /* What a command looks like. */ +*** ../bash-5.0-patched/builtins/evalstring.c 2018-12-26 11:19:21.000000000 -0500 +--- builtins/evalstring.c 2019-01-29 14:15:19.000000000 -0500 +*************** +*** 101,104 **** +--- 101,113 ---- + } + ++ int ++ can_optimize_connection (command) ++ COMMAND *command; ++ { ++ return (*bash_input.location.string == '\0' && ++ (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') && ++ command->value.Connection->second->type == cm_simple); ++ } ++ + void + optimize_fork (command) +*************** +*** 106,110 **** + { + if (command->type == cm_connection && +! (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR) && + should_suppress_fork (command->value.Connection->second)) + { +--- 115,120 ---- + { + if (command->type == cm_connection && +! (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)) + { +*************** +*** 413,418 **** + command->value.Simple->flags |= CMD_NO_FORK; + } +! else if (command->type == cm_connection) +! optimize_fork (command); + #endif /* ONESHOT */ + +--- 423,438 ---- + command->value.Simple->flags |= CMD_NO_FORK; + } +! +! /* Can't optimize forks out here execept for simple commands. +! This knows that the parser sets up commands as left-side heavy +! (&& and || are left-associative) and after the single parse, +! if we are at the end of the command string, the last in a +! 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; +! command->value.Connection->second->value.Simple->flags |= CMD_TRY_OPTIMIZING; +! } + #endif /* ONESHOT */ + +*** ../bash-5.0-patched/execute_cmd.c 2018-12-05 09:05:14.000000000 -0500 +--- execute_cmd.c 2019-01-25 15:59:00.000000000 -0500 +*************** +*** 2768,2771 **** +--- 2768,2773 ---- + (exec_result != EXECUTION_SUCCESS))) + { ++ optimize_fork (command); ++ + second = command->value.Connection->second; + if (ignore_return && second) +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 4 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 5 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-006 b/src/patches/bash/bash50-006 new file mode 100644 index 000000000..2ad1cd200 --- /dev/null +++ b/src/patches/bash/bash50-006 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.0 +Patch-ID: bash50-006 + +Bug-Reported-by: Tomas Mozes hydrapolic@gmail.com +Bug-Reference-ID: CAG6MAzQumLU2vhnmr1UrYAUQAFW5Yo8hfM_sEibX9RJQWJkRrA@mail.gmail.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-03/msg00037.html + +Bug-Description: + +Bash-5.0 did not build successfully if SYSLOG_HISTORY was defined without +also defining SYSLOG_SHOPT. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/builtins/shopt.def 2018-10-05 14:49:02.000000000 -0400 +--- builtins/shopt.def 2019-01-23 09:55:22.000000000 -0500 +*************** +*** 123,127 **** + #endif + +! #if defined (SYSLOG_HISTORY) && defined (SYSLOG_SHOPT) + extern int syslog_history; + #endif +--- 123,127 ---- + #endif + +! #if defined (SYSLOG_HISTORY) + extern int syslog_history; + #endif +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 5 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 6 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-007 b/src/patches/bash/bash50-007 new file mode 100644 index 000000000..b9eb4150a --- /dev/null +++ b/src/patches/bash/bash50-007 @@ -0,0 +1,62 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.0 +Patch-ID: bash50-007 + +Bug-Reported-by: Grisha Levit grishalevit@gmail.com +Bug-Reference-ID: CAMu=BroHapG1AS3xB5SQaCX2XKu=-E2Ob9uW6LNuHvd=YohrDw@mail.gmail.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-02/msg00067.html + +Bug-Description: + +Running `exec' when job control was disabled, even temporarily, but after it +had been initialized, could leave the terminal in the wrong process group for +the executed process. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/jobs.c 2018-12-06 11:44:34.000000000 -0500 +--- jobs.c 2019-04-12 15:15:10.000000000 -0400 +*************** +*** 4838,4850 **** + { + if (job_control) +! { +! terminate_stopped_jobs (); + +! if (original_pgrp >= 0) +! give_terminal_to (original_pgrp, 1); +! } + +! if (original_pgrp >= 0) +! setpgid (0, original_pgrp); + } + +--- 4838,4848 ---- + { + if (job_control) +! terminate_stopped_jobs (); + +! if (original_pgrp >= 0 && terminal_pgrp != original_pgrp) +! give_terminal_to (original_pgrp, 1); + +! if (original_pgrp >= 0 && setpgid (0, original_pgrp) == 0) +! shell_pgrp = original_pgrp; + } + +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 6 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 7 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-008 b/src/patches/bash/bash50-008 new file mode 100644 index 000000000..b09d6b33a --- /dev/null +++ b/src/patches/bash/bash50-008 @@ -0,0 +1,68 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.0 +Patch-ID: bash50-008 + +Bug-Reported-by: Michael Albinus michael.albinus@gmx.de +Bug-Reference-ID: 87bm36k3kz.fsf@gmx.de +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2019-02/msg00111.html + +Bug-Description: + +When HISTSIZE is set to 0, history expansion can leave the history length +set to an incorrect value, leading to subsequent attempts to access invalid +memory. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/bashhist.c 2018-07-05 22:41:14.000000000 -0400 +--- bashhist.c 2019-02-20 16:20:04.000000000 -0500 +*************** +*** 561,573 **** + if (!history_expansion_inhibited && history_expansion && history_expansion_p (line)) + { + /* If we are expanding the second or later line of a multi-line + command, decrease history_length so references to history expansions + in these lines refer to the previous history entry and not the + current command. */ + if (history_length > 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1) + history_length--; + expanded = history_expand (line, &history_value); + if (history_length >= 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1) +! history_length++; + + if (expanded) +--- 561,576 ---- + if (!history_expansion_inhibited && history_expansion && history_expansion_p (line)) + { ++ int old_len; ++ + /* If we are expanding the second or later line of a multi-line + command, decrease history_length so references to history expansions + in these lines refer to the previous history entry and not the + current command. */ ++ old_len = history_length; + if (history_length > 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1) + history_length--; + expanded = history_expand (line, &history_value); + if (history_length >= 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1) +! history_length = old_len; + + if (expanded) + +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 7 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 8 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-009 b/src/patches/bash/bash50-009 new file mode 100644 index 000000000..aef4ce7b5 --- /dev/null +++ b/src/patches/bash/bash50-009 @@ -0,0 +1,42 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.0 +Patch-ID: bash50-009 + +Bug-Reported-by: chet.ramey@case.edu +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +The history file reading code doesn't close the file descriptor open to +the history file when it encounters a zero-length file. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/lib/readline/histfile.c 2018-06-11 09:14:52.000000000 -0400 +--- lib/readline/histfile.c 2019-05-16 15:55:57.000000000 -0400 +*************** +*** 306,309 **** +--- 312,316 ---- + { + free (input); ++ close (file); + return 0; /* don't waste time if we don't have to */ + } +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 8 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 9 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-010 b/src/patches/bash/bash50-010 new file mode 100644 index 000000000..bac7aa925 --- /dev/null +++ b/src/patches/bash/bash50-010 @@ -0,0 +1,172 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.0 +Patch-ID: bash50-010 + +Bug-Reported-by: Thorsten Glaser tg@mirbsd.de +Bug-Reference-ID: 156622962831.19438.16374961114836556294.reportbug@tglase.lan.tarent.de +Bug-Reference-URL: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=935115 + +Bug-Description: + +Bash-5.0 changed the way assignment statements preceding special builtins +and shell functions were handled in posix mode. They automatically created +or modified global variables instead of modifying existing local variables +as in bash-4.4. + +The bash-4.4 posix-mode semantics were buggy, and resulted in creating +local variables where they were not intended and modifying global variables +and local variables simultaneously. + +The bash-5.0 changes were intended to fix this issue, but did not preserve +enough backwards compatibility. The posix standard also changed what it +required in these cases, so bash-5.0 is not bound by the strict conformance +requirements that existed in previous issues of the standard. + +This patch modifies the bash-5.0 posix mode behavior in an effort to restore +some backwards compatibility and rationalize the behavior in the presence of +local variables. It + +1. Changes the assignment semantics to be more similar to standalone assignment + statements: assignments preceding a function call or special builtin while + executing in a shell function will modify the value of a local variable + with the same name for the duration of the function's execution; + +2. Changes assignments preceding shell function calls or special builtins + from within a shell function to no longer create or modify global variables + in the presence of a local variable with the same name; + +3. Assignment statements preceding a shell function call or special builtin + at the global scope continue to modify the (global) calling environment, + but are unaffected by assignments preceding function calls or special + builtins within a function, as described in item 2. This is also similar + to the behavior of a standalone assignment statement. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/variables.c 2018-12-18 11:07:21.000000000 -0500 +--- variables.c 2019-08-22 10:53:44.000000000 -0400 +*************** +*** 4461,4467 **** + + /* Take a variable from an assignment statement preceding a posix special +! builtin (including `return') and create a global variable from it. This +! is called from merge_temporary_env, which is only called when in posix +! mode. */ + static void + push_posix_temp_var (data) +--- 4461,4467 ---- + + /* Take a variable from an assignment statement preceding a posix special +! builtin (including `return') and create a variable from it as if a +! standalone assignment statement had been performed. This is called from +! merge_temporary_env, which is only called when in posix mode. */ + static void + push_posix_temp_var (data) +*************** +*** 4473,4486 **** + var = (SHELL_VAR *)data; + +! binding_table = global_variables->table; +! if (binding_table == 0) +! binding_table = global_variables->table = hash_create (VARIABLES_HASH_BUCKETS); +! +! v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE|ASS_NOLONGJMP); + + /* global variables are no longer temporary and don't need propagating. */ +! var->attributes &= ~(att_tempvar|att_propagate); + if (v) +! v->attributes |= var->attributes; + + if (find_special_var (var->name) >= 0) +--- 4473,4497 ---- + var = (SHELL_VAR *)data; + +! /* Just like do_assignment_internal(). This makes assignments preceding +! special builtins act like standalone assignment statements when in +! posix mode, satisfying the posix requirement that this affect the +! "current execution environment." */ +! v = bind_variable (var->name, value_cell (var), ASS_FORCE|ASS_NOLONGJMP); +! +! /* If this modifies an existing local variable, v->context will be non-zero. +! If it comes back with v->context == 0, we bound at the global context. +! Set binding_table appropriately. It doesn't matter whether it's correct +! if the variable is local, only that it's not global_variables->table */ +! binding_table = v->context ? shell_variables->table : global_variables->table; + + /* global variables are no longer temporary and don't need propagating. */ +! if (binding_table == global_variables->table) +! var->attributes &= ~(att_tempvar|att_propagate); +! + if (v) +! { +! v->attributes |= var->attributes; +! v->attributes &= ~att_tempvar; /* not a temp var now */ +! } + + if (find_special_var (var->name) >= 0) +*************** +*** 4576,4587 **** + { + int i; + + tempvar_list = strvec_create (HASH_ENTRIES (temporary_env) + 1); + tempvar_list[tvlist_ind = 0] = 0; +! +! hash_flush (temporary_env, pushf); +! hash_dispose (temporary_env); + temporary_env = (HASH_TABLE *)NULL; + + tempvar_list[tvlist_ind] = 0; + +--- 4587,4601 ---- + { + int i; ++ HASH_TABLE *disposer; + + tempvar_list = strvec_create (HASH_ENTRIES (temporary_env) + 1); + tempvar_list[tvlist_ind = 0] = 0; +! +! disposer = temporary_env; + temporary_env = (HASH_TABLE *)NULL; + ++ hash_flush (disposer, pushf); ++ hash_dispose (disposer); ++ + tempvar_list[tvlist_ind] = 0; + +*** ../bash-5.0-patched/tests/varenv.right 2018-12-17 15:39:48.000000000 -0500 +--- tests/varenv.right 2019-08-22 16:05:25.000000000 -0400 +*************** +*** 147,153 **** + outside: declare -- var="one" + inside: declare -x var="value" +! outside: declare -x var="value" +! inside: declare -- var="local" +! outside: declare -x var="global" + foo=<unset> environment foo= + foo=foo environment foo=foo +--- 147,153 ---- + outside: declare -- var="one" + inside: declare -x var="value" +! outside: declare -- var="outside" +! inside: declare -x var="global" +! outside: declare -- var="outside" + foo=<unset> environment foo= + foo=foo environment foo=foo +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 9 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 10 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash50-011 b/src/patches/bash/bash50-011 new file mode 100644 index 000000000..a9ae690e0 --- /dev/null +++ b/src/patches/bash/bash50-011 @@ -0,0 +1,59 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 5.0 +Patch-ID: bash50-011 + +Bug-Reported-by: Matt Whitlock +Bug-Reference-ID: +Bug-Reference-URL: https://savannah.gnu.org/support/?109671 + +Bug-Description: + +The conditional command did not perform appropriate quoted null character +removal on its arguments, causing syntax errors and attempts to stat +invalid pathnames. + +Patch (apply with `patch -p0'): + +*** ../bash-5.0-patched/subst.c 2018-12-22 17:43:37.000000000 -0500 +--- subst.c 2019-04-14 13:25:41.000000000 -0400 +*************** +*** 3626,3630 **** + SPECIAL is 2, this is an rhs argument for the =~ operator, and should + be quoted appropriately for regcomp/regexec. The caller is responsible +! for removing the backslashes if the unquoted word is needed later. */ + char * + cond_expand_word (w, special) +--- 3642,3648 ---- + SPECIAL is 2, this is an rhs argument for the =~ operator, and should + be quoted appropriately for regcomp/regexec. The caller is responsible +! for removing the backslashes if the unquoted word is needed later. In +! any case, since we don't perform word splitting, we need to do quoted +! null character removal. */ + char * + cond_expand_word (w, special) +*************** +*** 3647,3650 **** +--- 3665,3670 ---- + if (special == 0) /* LHS */ + { ++ if (l->word) ++ word_list_remove_quoted_nulls (l); + dequote_list (l); + r = string_list (l); +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 10 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 11 + + #endif /* _PATCHLEVEL_H_ */
Signed-off-by: Peter Müller peter.mueller@ipfire.org --- src/patches/readline/readline80-001 | 38 +++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/patches/readline/readline80-001
diff --git a/src/patches/readline/readline80-001 b/src/patches/readline/readline80-001 new file mode 100644 index 000000000..aa72a9dfa --- /dev/null +++ b/src/patches/readline/readline80-001 @@ -0,0 +1,38 @@ + READLINE PATCH REPORT + ===================== + +Readline-Release: 8.0 +Patch-ID: readline80-001 + +Bug-Reported-by: chet.ramey@case.edu +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +The history file reading code doesn't close the file descriptor open to +the history file when it encounters a zero-length file. + +Patch (apply with `patch -p0'): + +*** ../readline-8.0-patched/histfile.c 2018-06-11 09:14:52.000000000 -0400 +--- histfile.c 2019-05-16 15:55:57.000000000 -0400 +*************** +*** 306,309 **** +--- 312,316 ---- + { + free (input); ++ close (file); + return 0; /* don't waste time if we don't have to */ + } +*** ../readline-8.0/patchlevel 2013-11-15 08:11:11.000000000 -0500 +--- patchlevel 2014-03-21 08:28:40.000000000 -0400 +*************** +*** 1,3 **** + # Do not edit -- exists only for use by patch + +! 0 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + +! 1
Signed-off-by: Peter Müller peter.mueller@ipfire.org --- src/patches/bash/bash43-001 | 58 - src/patches/bash/bash43-002 | 62 - src/patches/bash/bash43-003 | 48 - src/patches/bash/bash43-004 | 47 - src/patches/bash/bash43-005 | 63 - src/patches/bash/bash43-006 | 48 - src/patches/bash/bash43-007 | 50 - src/patches/bash/bash43-008 | 188 --- src/patches/bash/bash43-009 | 64 - src/patches/bash/bash43-010 | 157 --- src/patches/bash/bash43-011 | 49 - src/patches/bash/bash43-012 | 43 - src/patches/bash/bash43-013 | 66 - src/patches/bash/bash43-014 | 102 -- src/patches/bash/bash43-015 | 58 - src/patches/bash/bash43-016 | 132 -- src/patches/bash/bash43-017 | 51 - src/patches/bash/bash43-018 | 44 - src/patches/bash/bash43-019 | 84 -- src/patches/bash/bash43-020 | 110 -- src/patches/bash/bash43-021 | 52 - src/patches/bash/bash43-022 | 56 - src/patches/bash/bash43-023 | 104 -- src/patches/bash/bash43-024 | 54 - src/patches/bash/bash43-025 | 123 -- src/patches/bash/bash43-026 | 60 - src/patches/bash/bash43-027 | 221 ---- src/patches/bash/bash43-028 | 2265 ----------------------------------- src/patches/bash/bash43-029 | 59 - src/patches/bash/bash43-030 | 2064 ------------------------------- src/patches/readline/readline63-001 | 43 - src/patches/readline/readline63-002 | 44 - src/patches/readline/readline63-003 | 47 - src/patches/readline/readline63-004 | 45 - src/patches/readline/readline63-005 | 58 - src/patches/readline/readline63-006 | 63 - 36 files changed, 6882 deletions(-) delete mode 100644 src/patches/bash/bash43-001 delete mode 100644 src/patches/bash/bash43-002 delete mode 100644 src/patches/bash/bash43-003 delete mode 100644 src/patches/bash/bash43-004 delete mode 100644 src/patches/bash/bash43-005 delete mode 100644 src/patches/bash/bash43-006 delete mode 100644 src/patches/bash/bash43-007 delete mode 100644 src/patches/bash/bash43-008 delete mode 100644 src/patches/bash/bash43-009 delete mode 100644 src/patches/bash/bash43-010 delete mode 100644 src/patches/bash/bash43-011 delete mode 100644 src/patches/bash/bash43-012 delete mode 100644 src/patches/bash/bash43-013 delete mode 100644 src/patches/bash/bash43-014 delete mode 100644 src/patches/bash/bash43-015 delete mode 100644 src/patches/bash/bash43-016 delete mode 100644 src/patches/bash/bash43-017 delete mode 100644 src/patches/bash/bash43-018 delete mode 100644 src/patches/bash/bash43-019 delete mode 100644 src/patches/bash/bash43-020 delete mode 100644 src/patches/bash/bash43-021 delete mode 100644 src/patches/bash/bash43-022 delete mode 100644 src/patches/bash/bash43-023 delete mode 100644 src/patches/bash/bash43-024 delete mode 100644 src/patches/bash/bash43-025 delete mode 100644 src/patches/bash/bash43-026 delete mode 100644 src/patches/bash/bash43-027 delete mode 100644 src/patches/bash/bash43-028 delete mode 100644 src/patches/bash/bash43-029 delete mode 100644 src/patches/bash/bash43-030 delete mode 100644 src/patches/readline/readline63-001 delete mode 100644 src/patches/readline/readline63-002 delete mode 100644 src/patches/readline/readline63-003 delete mode 100644 src/patches/readline/readline63-004 delete mode 100644 src/patches/readline/readline63-005 delete mode 100644 src/patches/readline/readline63-006
diff --git a/src/patches/bash/bash43-001 b/src/patches/bash/bash43-001 deleted file mode 100644 index ea1c6b265..000000000 --- a/src/patches/bash/bash43-001 +++ /dev/null @@ -1,58 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-001 - -Bug-Reported-by: NBaH nbah@sfr.fr -Bug-Reference-ID: ler0b5$iu9$1@speranza.aioe.org -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00092.html - -Bug-Description: - -A missing check for a valid option prevented `test -R' from working. There -is another problem that causes bash to look up the wrong variable name when -processing the argument to `test -R'. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3/test.c 2014-02-04 16:52:58.000000000 -0500 ---- test.c 2014-02-28 21:22:44.000000000 -0500 -*************** -*** 647,652 **** - - case 'R': -! v = find_variable (arg); -! return (v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v) ? TRUE : FALSE); - } - ---- 647,652 ---- - - case 'R': -! v = find_variable_noref (arg); -! return ((v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v)) ? TRUE : FALSE); - } - -*************** -*** 724,727 **** ---- 724,728 ---- - case 'u': case 'v': case 'w': case 'x': case 'z': - case 'G': case 'L': case 'O': case 'S': case 'N': -+ case 'R': - return (1); - } -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20: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_ */ diff --git a/src/patches/bash/bash43-002 b/src/patches/bash/bash43-002 deleted file mode 100644 index 735b7b81a..000000000 --- a/src/patches/bash/bash43-002 +++ /dev/null @@ -1,62 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-002 - -Bug-Reported-by: Moe Tunes moetunes42@gmail.com -Bug-Reference-ID: 53103F49.3070100@gmail.com -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00086.html - -Bug-Description: - -A change to save state while running the DEBUG trap caused pipelines to hang -on systems which need process group synchronization while building pipelines. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3/trap.c 2014-02-05 10:03:21.000000000 -0500 ---- trap.c 2014-02-28 09:51:43.000000000 -0500 -*************** -*** 921,925 **** - - #if defined (JOB_CONTROL) -! save_pipeline (1); /* XXX only provides one save level */ - #endif - ---- 921,926 ---- - - #if defined (JOB_CONTROL) -! if (sig != DEBUG_TRAP) /* run_debug_trap does this */ -! save_pipeline (1); /* XXX only provides one save level */ - #endif - -*************** -*** 941,945 **** - - #if defined (JOB_CONTROL) -! restore_pipeline (1); - #endif - ---- 942,947 ---- - - #if defined (JOB_CONTROL) -! if (sig != DEBUG_TRAP) /* run_debug_trap does this */ -! restore_pipeline (1); - #endif - -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20: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_ */ diff --git a/src/patches/bash/bash43-003 b/src/patches/bash/bash43-003 deleted file mode 100644 index 0f32f410d..000000000 --- a/src/patches/bash/bash43-003 +++ /dev/null @@ -1,48 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-003 - -Bug-Reported-by: Anatol Pomozov anatol.pomozov@gmail.com -Bug-Reference-ID: CAOMFOmXy3mT2So5GQ5F-smCVArQuAeBwZ2QKzgCtMeXJoDeYOQ@mail.gmail.com -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00010.html - -Bug-Description: - -When in callback mode, some readline commands can cause readline to seg -fault by passing invalid contexts to callback functions. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3/lib/readline/readline.c 2013-10-28 14:58:06.000000000 -0400 ---- lib/readline/readline.c 2014-03-10 14:15:02.000000000 -0400 -*************** -*** 745,749 **** - - RL_CHECK_SIGNALS (); -! if (r == 0) /* success! */ - { - _rl_keyseq_chain_dispose (); ---- 745,750 ---- - - RL_CHECK_SIGNALS (); -! /* We only treat values < 0 specially to simulate recursion. */ -! if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */ - { - _rl_keyseq_chain_dispose (); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20: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_ */ diff --git a/src/patches/bash/bash43-004 b/src/patches/bash/bash43-004 deleted file mode 100644 index 010f04a2a..000000000 --- a/src/patches/bash/bash43-004 +++ /dev/null @@ -1,47 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-004 - -Bug-Reported-by: Daan van Rossum daan@flash.uchicago.edu -Bug-Reference-ID: 20140307072523.GA14250@flash.uchicago.edu -Bug-Reference-URL: - -Bug-Description: - -The `.' command in vi mode cannot undo multi-key commands beginning with -`c', `d', and `y' (command plus motion specifier). - -Patch (apply with `patch -p0'): - -*** ../bash-4.3/lib/readline/readline.c 2013-10-28 14:58:06.000000000 -0400 ---- lib/readline/readline.c 2014-03-07 15:20:33.000000000 -0500 -*************** -*** 965,969 **** - if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && - key != ANYOTHERKEY && -! rl_key_sequence_length == 1 && /* XXX */ - _rl_vi_textmod_command (key)) - _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); ---- 965,969 ---- - if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && - key != ANYOTHERKEY && -! _rl_dispatching_keymap == vi_movement_keymap && - _rl_vi_textmod_command (key)) - _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20: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_ */ diff --git a/src/patches/bash/bash43-005 b/src/patches/bash/bash43-005 deleted file mode 100644 index bcd40697c..000000000 --- a/src/patches/bash/bash43-005 +++ /dev/null @@ -1,63 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-005 - -Bug-Reported-by: David Sines dave.gma@googlemail.com -Bug-Reference-ID: CAO3BAa_CK_Rgkhdfzs+NJ4KFYdB9qW3pvXQK0xLCi6GMmDU8bw@mail.gmail.com -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00037.html - -Bug-Description: - -When in Posix mode, bash did not correctly interpret the ANSI-C-style -$'...' quoting mechanism when performing pattern substitution word -expansions within double quotes. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3/parse.y 2014-02-11 09:42:10.000000000 -0500 ---- parse.y 2014-03-07 20:57:15.000000000 -0500 -*************** -*** 3399,3403 **** - unescaped double-quotes or single-quotes, if any, shall occur." */ - /* This was changed in Austin Group Interp 221 */ -! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == ''') - continue; - ---- 3399,3403 ---- - unescaped double-quotes or single-quotes, if any, shall occur." */ - /* This was changed in Austin Group Interp 221 */ -! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == ''') - continue; - -*** ../bash-4.3/y.tab.c 2014-02-11 10:57:47.000000000 -0500 ---- y.tab.c 2014-03-28 10:41:15.000000000 -0400 -*************** -*** 5711,5715 **** - unescaped double-quotes or single-quotes, if any, shall occur." */ - /* This was changed in Austin Group Interp 221 */ -! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == ''') - continue; - ---- 5711,5715 ---- - unescaped double-quotes or single-quotes, if any, shall occur." */ - /* This was changed in Austin Group Interp 221 */ -! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == ''') - continue; - -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20: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_ */ diff --git a/src/patches/bash/bash43-006 b/src/patches/bash/bash43-006 deleted file mode 100644 index 24ff057a5..000000000 --- a/src/patches/bash/bash43-006 +++ /dev/null @@ -1,48 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-006 - -Bug-Reported-by: Eduardo A . Bustamante Lopez dualbus@gmail.com -Bug-Reference-ID: 20140228170013.GA16015@dualbus.me -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00091.html - -Bug-Description: - -A shell that started with job control active but was not interactive left -the terminal in the wrong process group when exiting, causing its parent -shell to get a stop signal when it attempted to read from the terminal. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3/jobs.c 2014-01-10 09:05:34.000000000 -0500 ---- jobs.c 2014-03-02 18:05:09.000000000 -0500 -*************** -*** 4375,4379 **** - end_job_control () - { -! if (interactive_shell) /* XXX - should it be interactive? */ - { - terminate_stopped_jobs (); ---- 4375,4379 ---- - end_job_control () - { -! if (interactive_shell || job_control) /* XXX - should it be just job_control? */ - { - terminate_stopped_jobs (); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20: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_ */ diff --git a/src/patches/bash/bash43-007 b/src/patches/bash/bash43-007 deleted file mode 100644 index 0d62c9ec6..000000000 --- a/src/patches/bash/bash43-007 +++ /dev/null @@ -1,50 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-007 - -Bug-Reported-by: geir.hauge@gmail.com -Bug-Reference-ID: 20140318093650.B181C1C5B0B@gina.itea.ntnu.no -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00095.html - -Bug-Description: - -Using compound assignments for associative arrays like - -assoc=( [x]= [y]=bar ) - -left the value corresponding to the key `x' NULL. This caused subsequent -lookups to interpret it as unset. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3/arrayfunc.c 2013-08-02 16:19:59.000000000 -0400 ---- arrayfunc.c 2014-03-18 11:08:15.000000000 -0400 -*************** -*** 598,601 **** ---- 598,606 ---- - { - val = expand_assignment_string_to_string (val, 0); -+ if (val == 0) -+ { -+ val = (char *)xmalloc (1); -+ val[0] = '\0'; /* like do_assignment_internal */ -+ } - free_val = 1; - } -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20: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_ */ diff --git a/src/patches/bash/bash43-008 b/src/patches/bash/bash43-008 deleted file mode 100644 index 0ae7c9522..000000000 --- a/src/patches/bash/bash43-008 +++ /dev/null @@ -1,188 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-008 - -Bug-Reported-by: Stephane Chazelas stephane.chazelas@gmail.com -Bug-Reference-ID: 20140318135901.GB22158@chaz.gmail.com -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00098.html - -Bug-Description: - -Some extended glob patterns incorrectly matched filenames with a leading -dot, regardless of the setting of the `dotglob' option. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3/lib/glob/gmisc.c 2013-10-28 14:45:25.000000000 -0400 ---- lib/glob/gmisc.c 2014-03-19 09:16:08.000000000 -0400 -*************** -*** 211,214 **** ---- 211,215 ---- - case '!': - case '@': -+ case '?': - return (pat[1] == LPAREN); - default: -*** ../bash-4.3/lib/glob/glob.c 2014-01-31 21:43:51.000000000 -0500 ---- lib/glob/glob.c 2014-03-20 09:01:26.000000000 -0400 -*************** -*** 180,202 **** - int flags; - { -! char *pp, *pe, *t; -! int n, r; - - pp = pat + 2; -! pe = pp + strlen (pp) - 1; /*(*/ -! if (*pe != ')') -! return 0; -! if ((t = strchr (pp, '|')) == 0) /* easy case first */ - { - *pe = '\0'; - r = skipname (pp, dname, flags); /*(*/ - *pe = ')'; - return r; - } - while (t = glob_patscan (pp, pe, '|')) - { - n = t[-1]; - t[-1] = '\0'; - r = skipname (pp, dname, flags); - t[-1] = n; - if (r == 0) /* if any pattern says not skip, we don't skip */ ---- 180,215 ---- - int flags; - { -! char *pp, *pe, *t, *se; -! int n, r, negate; - -+ negate = *pat == '!'; - pp = pat + 2; -! se = pp + strlen (pp) - 1; /* end of string */ -! pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */ -! /* we should check for invalid extglob pattern here */ -! /* if pe != se we have more of the pattern at the end of the extglob -! pattern. Check the easy case first ( */ -! if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0) - { - *pe = '\0'; -+ #if defined (HANDLE_MULTIBYTE) -+ r = mbskipname (pp, dname, flags); -+ #else - r = skipname (pp, dname, flags); /*(*/ -+ #endif - *pe = ')'; - return r; - } -+ -+ /* check every subpattern */ - while (t = glob_patscan (pp, pe, '|')) - { - n = t[-1]; - t[-1] = '\0'; -+ #if defined (HANDLE_MULTIBYTE) -+ r = mbskipname (pp, dname, flags); -+ #else - r = skipname (pp, dname, flags); -+ #endif - t[-1] = n; - if (r == 0) /* if any pattern says not skip, we don't skip */ -*************** -*** 205,219 **** - } /*(*/ - -! if (pp == pe) /* glob_patscan might find end of pattern */ - return r; - -! *pe = '\0'; -! # if defined (HANDLE_MULTIBYTE) -! r = mbskipname (pp, dname, flags); /*(*/ -! # else -! r = skipname (pp, dname, flags); /*(*/ -! # endif -! *pe = ')'; -! return r; - } - #endif ---- 218,227 ---- - } /*(*/ - -! /* glob_patscan might find end of pattern */ -! if (pp == se) - return r; - -! /* but if it doesn't then we didn't match a leading dot */ -! return 0; - } - #endif -*************** -*** 278,289 **** - { - #if EXTENDED_GLOB -! wchar_t *pp, *pe, *t, n; -! int r; - - pp = pat + 2; -! pe = pp + wcslen (pp) - 1; /*(*/ -! if (*pe != L')') -! return 0; -! if ((t = wcschr (pp, L'|')) == 0) - { - *pe = L'\0'; ---- 286,298 ---- - { - #if EXTENDED_GLOB -! wchar_t *pp, *pe, *t, n, *se; -! int r, negate; - -+ negate = *pat == L'!'; - pp = pat + 2; -! se = pp + wcslen (pp) - 1; /*(*/ -! pe = glob_patscan_wc (pp, se, 0); -! -! if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0) - { - *pe = L'\0'; -*************** -*** 292,295 **** ---- 301,306 ---- - return r; - } -+ -+ /* check every subpattern */ - while (t = glob_patscan_wc (pp, pe, '|')) - { -*************** -*** 306,313 **** - return r; - -! *pe = L'\0'; -! r = wchkname (pp, dname); /*(*/ -! *pe = L')'; -! return r; - #else - return (wchkname (pat, dname)); ---- 317,322 ---- - return r; - -! /* but if it doesn't then we didn't match a leading dot */ -! return 0; - #else - return (wchkname (pat, dname)); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20: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_ */ diff --git a/src/patches/bash/bash43-009 b/src/patches/bash/bash43-009 deleted file mode 100644 index 015835cde..000000000 --- a/src/patches/bash/bash43-009 +++ /dev/null @@ -1,64 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-009 - -Bug-Reported-by: Matthias Klose doko@debian.org -Bug-Reference-ID: 53346FC8.6090005@debian.org -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00171.html - -Bug-Description: - -There is a problem with unsigned sign extension when attempting to reallocate -the input line when it is fewer than 3 characters long and there has been a -history expansion. The sign extension causes the shell to not reallocate the -line, which results in a segmentation fault when it writes past the end. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/parse.y 2014-02-11 09:42:10.000000000 -0500 ---- parse.y 2014-03-27 16:33:29.000000000 -0400 -*************** -*** 2425,2429 **** - if (shell_input_line_terminator != EOF) - { -! if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3) - shell_input_line = (char *)xrealloc (shell_input_line, - 1 + (shell_input_line_size += 2)); ---- 2425,2429 ---- - if (shell_input_line_terminator != EOF) - { -! if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size)) - shell_input_line = (char *)xrealloc (shell_input_line, - 1 + (shell_input_line_size += 2)); -*** ../bash-4.3-patched/y.tab.c 2014-03-28 11:17:06.000000000 -0400 ---- y.tab.c 2014-04-07 11:48:31.000000000 -0400 -*************** -*** 4737,4741 **** - if (shell_input_line_terminator != EOF) - { -! if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3) - shell_input_line = (char *)xrealloc (shell_input_line, - 1 + (shell_input_line_size += 2)); ---- 4737,4741 ---- - if (shell_input_line_terminator != EOF) - { -! if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size)) - shell_input_line = (char *)xrealloc (shell_input_line, - 1 + (shell_input_line_size += 2)); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20: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_ */ diff --git a/src/patches/bash/bash43-010 b/src/patches/bash/bash43-010 deleted file mode 100644 index 835a96ead..000000000 --- a/src/patches/bash/bash43-010 +++ /dev/null @@ -1,157 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-010 - -Bug-Reported-by: Albert Shih Albert.Shih@obspm.fr -Bug-Reference-ID: Wed, 5 Mar 2014 23:01:40 +0100 -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00028.html - -Bug-Description: - -Patch (apply with `patch -p0'): - -This patch changes the behavior of programmable completion to compensate -for two assumptions made by the bash-completion package. Bash-4.3 changed -to dequote the argument to programmable completion only under certain -circumstances, to make the behavior of compgen more consistent when run -from the command line -- closer to the behavior when run by a shell function -run as part of programmable completion. Bash-completion can pass quoted -arguments to compgen when the original word to be completed was not quoted, -expecting programmable completion to dequote the word before attempting -completion. - -This patch fixes two cases: - -1. An empty string that bash-completion passes to compgen as a quoted null - string (''). - -2. An unquoted word that bash-completion quotes using single quotes or - backslashes before passing it to compgen. - -In these cases, since readline did not detect a quote character in the original -word to be completed, bash-4.3 - -*** ../bash-4.3/externs.h 2014-01-02 14:58:20.000000000 -0500 ---- externs.h 2014-03-13 14:42:57.000000000 -0400 -*************** -*** 325,328 **** ---- 325,329 ---- - extern char *sh_backslash_quote_for_double_quotes __P((char *)); - extern int sh_contains_shell_metas __P((char *)); -+ extern int sh_contains_quotes __P((char *)); - - /* declarations for functions defined in lib/sh/spell.c */ -*** ../bash-4.3/lib/sh/shquote.c 2013-03-31 21:53:32.000000000 -0400 ---- lib/sh/shquote.c 2014-03-13 14:42:57.000000000 -0400 -*************** -*** 312,313 **** ---- 312,327 ---- - return (0); - } -+ -+ int -+ sh_contains_quotes (string) -+ char *string; -+ { -+ char *s; -+ -+ for (s = string; s && *s; s++) -+ { -+ if (*s == ''' || *s == '"' || *s == '\') -+ return 1; -+ } -+ return 0; -+ } -*** ../bash-4.3/pcomplete.c 2013-08-26 15:23:45.000000000 -0400 ---- pcomplete.c 2014-03-25 17:23:23.000000000 -0400 -*************** -*** 184,187 **** ---- 184,188 ---- - COMPSPEC *pcomp_curcs; - const char *pcomp_curcmd; -+ const char *pcomp_curtxt; - - #ifdef DEBUG -*************** -*** 754,757 **** ---- 755,784 ---- - dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); - } -+ /* Intended to solve a mismatched assumption by bash-completion. If -+ the text to be completed is empty, but bash-completion turns it into -+ a quoted string ('') assuming that this code will dequote it before -+ calling readline, do the dequoting. */ -+ else if (iscompgen && iscompleting && -+ pcomp_curtxt && *pcomp_curtxt == 0 && -+ text && (*text == ''' || *text == '"') && text[1] == text[0] && text[2] == 0 && -+ rl_filename_dequoting_function) -+ dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); -+ /* Another mismatched assumption by bash-completion. If compgen is being -+ run as part of bash-completion, and the argument to compgen is not -+ the same as the word originally passed to the programmable completion -+ code, dequote the argument if it has quote characters. It's an -+ attempt to detect when bash-completion is quoting its filename -+ argument before calling compgen. */ -+ /* We could check whether gen_shell_function_matches is in the call -+ stack by checking whether the gen-shell-function-matches tag is in -+ the unwind-protect stack, but there's no function to do that yet. -+ We could simply check whether we're executing in a function by -+ checking variable_context, and may end up doing that. */ -+ else if (iscompgen && iscompleting && rl_filename_dequoting_function && -+ pcomp_curtxt && text && -+ STREQ (pcomp_curtxt, text) == 0 && -+ variable_context && -+ sh_contains_quotes (text)) /* guess */ -+ dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); - else - dfn = savestring (text); -*************** -*** 1523,1527 **** - { - COMPSPEC *cs, *oldcs; -! const char *oldcmd; - STRINGLIST *ret; - ---- 1550,1554 ---- - { - COMPSPEC *cs, *oldcs; -! const char *oldcmd, *oldtxt; - STRINGLIST *ret; - -*************** -*** 1546,1552 **** ---- 1573,1581 ---- - oldcs = pcomp_curcs; - oldcmd = pcomp_curcmd; -+ oldtxt = pcomp_curtxt; - - pcomp_curcs = cs; - pcomp_curcmd = cmd; -+ pcomp_curtxt = word; - - ret = gen_compspec_completions (cs, cmd, word, start, end, foundp); -*************** -*** 1554,1557 **** ---- 1583,1587 ---- - pcomp_curcs = oldcs; - pcomp_curcmd = oldcmd; -+ pcomp_curtxt = oldtxt; - - /* We need to conditionally handle setting *retryp here */ -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20: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_ */ diff --git a/src/patches/bash/bash43-011 b/src/patches/bash/bash43-011 deleted file mode 100644 index cdc1572ee..000000000 --- a/src/patches/bash/bash43-011 +++ /dev/null @@ -1,49 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-011 - -Bug-Reported-by: Egmont Koblinger egmont@gmail.com -Bug-Reference-ID: CAGWcZk+bU5Jo1M+tutGvL-250UBE9DXjpeJVofYJSFcqFEVfMg@mail.gmail.com -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00153.html - -Bug-Description: - -The signal handling changes to bash and readline (to avoid running any code -in a signal handler context) cause the cursor to be placed on the wrong -line of a multi-line command after a ^C interrupts editing. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/lib/readline/display.c 2013-12-27 13:10:56.000000000 -0500 ---- lib/readline/display.c 2014-03-27 11:52:45.000000000 -0400 -*************** -*** 2678,2682 **** - if (_rl_echoing_p) - { -! _rl_move_vert (_rl_vis_botlin); - _rl_vis_botlin = 0; - fflush (rl_outstream); ---- 2678,2683 ---- - if (_rl_echoing_p) - { -! if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */ -! _rl_move_vert (_rl_vis_botlin); - _rl_vis_botlin = 0; - fflush (rl_outstream); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20: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_ */ diff --git a/src/patches/bash/bash43-012 b/src/patches/bash/bash43-012 deleted file mode 100644 index 176fa15bd..000000000 --- a/src/patches/bash/bash43-012 +++ /dev/null @@ -1,43 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-012 - -Bug-Reported-by: Eduardo A. Bustamante Lópezdualbus@gmail.com -Bug-Reference-ID: 5346B54C.4070205@case.edu -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00051.html - -Bug-Description: - -When a SIGCHLD trap runs a command containing a shell builtin while -a script is running `wait' to wait for all running children to complete, -the SIGCHLD trap will not be run once for each child that terminates. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/jobs.c 2014-03-28 10:54:19.000000000 -0400 ---- jobs.c 2014-04-15 08:47:03.000000000 -0400 -*************** -*** 3598,3601 **** ---- 3598,3602 ---- - unwind_protect_pointer (the_pipeline); - unwind_protect_pointer (subst_assign_varlist); -+ unwind_protect_pointer (this_shell_builtin); - - /* We have to add the commands this way because they will be run -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20: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_ */ diff --git a/src/patches/bash/bash43-013 b/src/patches/bash/bash43-013 deleted file mode 100644 index 8f4006b48..000000000 --- a/src/patches/bash/bash43-013 +++ /dev/null @@ -1,66 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-013 - -Bug-Reported-by: Trond.Endrestol@ximalas.info -Bug-Reference-ID: alpine.BSF.2.03.1404192114310.1973@enterprise.ximalas.info -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00069.html - -Bug-Description: - -Using reverse-i-search when horizontal scrolling is enabled does not redisplay -the entire line containing the successful search results. - -Patch (apply with `patch -p0'): -*** ../bash-4.3-patched/lib/readline/display.c 2014-04-08 18:19:36.000000000 -0400 ---- lib/readline/display.c 2014-04-20 18:32:52.000000000 -0400 -*************** -*** 1638,1642 **** - the spot of first difference is before the end of the invisible chars, - lendiff needs to be adjusted. */ -! if (current_line == 0 && !_rl_horizontal_scroll_mode && - current_invis_chars != visible_wrap_offset) - { ---- 1638,1642 ---- - the spot of first difference is before the end of the invisible chars, - lendiff needs to be adjusted. */ -! if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */ - current_invis_chars != visible_wrap_offset) - { -*************** -*** 1826,1831 **** - _rl_last_c_pos += bytes_to_insert; - - if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) -! goto clear_rest_of_line; - } - } ---- 1826,1836 ---- - _rl_last_c_pos += bytes_to_insert; - -+ /* XXX - we only want to do this if we are at the end of the line -+ so we move there with _rl_move_cursor_relative */ - if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) -! { -! _rl_move_cursor_relative (ne-new, new); -! goto clear_rest_of_line; -! } - } - } -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20: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_ */ diff --git a/src/patches/bash/bash43-014 b/src/patches/bash/bash43-014 deleted file mode 100644 index f8371967f..000000000 --- a/src/patches/bash/bash43-014 +++ /dev/null @@ -1,102 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-014 - -Bug-Reported-by: Greg Wooledge wooledg@eeg.ccf.org -Bug-Reference-ID: 20140418202123.GB7660@eeg.ccf.org -Bug-Reference-URL: http://lists.gnu.org/archive/html/help-bash/2014-04/msg00004.html - -Bug-Description: - -Under certain circumstances, $@ is expanded incorrectly in contexts where -word splitting is not performed. - -Patch (apply with `patch -p0'): -*** ../bash-4.3-patched/subst.c 2014-01-23 16:26:37.000000000 -0500 ---- subst.c 2014-04-19 15:41:26.000000000 -0400 -*************** -*** 3249,3254 **** ---- 3249,3256 ---- - return ((char *)NULL); - -+ expand_no_split_dollar_star = 1; - w->flags |= W_NOSPLIT2; - l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0); -+ expand_no_split_dollar_star = 0; - if (l) - { -*************** -*** 7848,7851 **** ---- 7850,7857 ---- - according to POSIX.2, this expands to a list of the positional - parameters no matter what IFS is set to. */ -+ /* XXX - what to do when in a context where word splitting is not -+ performed? Even when IFS is not the default, posix seems to imply -+ that we behave like unquoted $* ? Maybe we should use PF_NOSPLIT2 -+ here. */ - temp = string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quoted|Q_DOUBLE_QUOTES) : quoted); - -*************** -*** 8817,8820 **** ---- 8823,8827 ---- - { - char *ifs_chars; -+ char *tstring; - - ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL; -*************** -*** 8831,8834 **** ---- 8838,8865 ---- - if (split_on_spaces) - list = list_string (istring, " ", 1); /* XXX quoted == 1? */ -+ /* If we have $@ (has_dollar_at != 0) and we are in a context where we -+ don't want to split the result (W_NOSPLIT2), and we are not quoted, -+ we have already separated the arguments with the first character of -+ $IFS. In this case, we want to return a list with a single word -+ with the separator possibly replaced with a space (it's what other -+ shells seem to do). -+ quoted_dollar_at is internal to this function and is set if we are -+ passed an argument that is unquoted (quoted == 0) but we encounter a -+ double-quoted $@ while expanding it. */ -+ else if (has_dollar_at && quoted_dollar_at == 0 && ifs_chars && quoted == 0 && (word->flags & W_NOSPLIT2)) -+ { -+ /* Only split and rejoin if we have to */ -+ if (*ifs_chars && *ifs_chars != ' ') -+ { -+ list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1); -+ tstring = string_list (list); -+ } -+ else -+ tstring = istring; -+ tword = make_bare_word (tstring); -+ if (tstring != istring) -+ free (tstring); -+ goto set_word_flags; -+ } - else if (has_dollar_at && ifs_chars) - list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1); -*************** -*** 8836,8839 **** ---- 8867,8871 ---- - { - tword = make_bare_word (istring); -+ set_word_flags: - if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED)) - tword->flags |= W_QUOTED; -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20: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_ */ diff --git a/src/patches/bash/bash43-015 b/src/patches/bash/bash43-015 deleted file mode 100644 index 9c4e5ea48..000000000 --- a/src/patches/bash/bash43-015 +++ /dev/null @@ -1,58 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-015 - -Bug-Reported-by: Clark Wang dearvoid@gmail.com -Bug-Reference-ID: CADv8-og2TOSoabXeNVXVGaXN3tEMHnYVq1rwOLe5meaRPSGRig@mail.gmail.com -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00095.html - -Bug-Description: - -When completing directory names, the directory name is dequoted twice. -This causes problems for directories with single and double quotes in -their names. - -Patch (apply with `patch -p0'): -*** ../bash-4.3-patched/bashline.c 2014-02-09 19:56:58.000000000 -0500 ---- bashline.c 2014-04-25 14:57:52.000000000 -0400 -*************** -*** 4168,4174 **** - - qc = rl_dispatching ? rl_completion_quote_character : 0; -! dfn = bash_dequote_filename ((char *)text, qc); - m1 = rl_completion_matches (dfn, rl_filename_completion_function); -! free (dfn); - - if (m1 == 0 || m1[0] == 0) ---- 4209,4222 ---- - - qc = rl_dispatching ? rl_completion_quote_character : 0; -! /* If rl_completion_found_quote != 0, rl_completion_matches will call the -! filename dequoting function, causing the directory name to be dequoted -! twice. */ -! if (rl_dispatching && rl_completion_found_quote == 0) -! dfn = bash_dequote_filename ((char *)text, qc); -! else -! dfn = (char *)text; - m1 = rl_completion_matches (dfn, rl_filename_completion_function); -! if (dfn != text) -! free (dfn); - - if (m1 == 0 || m1[0] == 0) -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20: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_ */ diff --git a/src/patches/bash/bash43-016 b/src/patches/bash/bash43-016 deleted file mode 100644 index 882d5939b..000000000 --- a/src/patches/bash/bash43-016 +++ /dev/null @@ -1,132 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-016 - -Bug-Reported-by: Pierre Gaston pierre.gaston@gmail.com -Bug-Reference-ID: CAPSX3sTCD61k1VQLJ5r-LWzEt+e7Xc-fxXmwn2u8EA5gJJej8Q@mail.gmail.com -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00100.html - -Bug-Description: - -An extended glob pattern containing a slash (`/') causes the globbing code -to misinterpret it as a directory separator. - -Patch (apply with `patch -p0'): -*** ../bash-4.3-patched/lib/glob/glob.c 2014-03-28 10:54:23.000000000 -0400 ---- lib/glob/glob.c 2014-05-02 10:24:28.000000000 -0400 -*************** -*** 124,127 **** ---- 124,129 ---- - extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int)); - -+ extern char *glob_dirscan __P((char *, int)); -+ - /* Compile `glob_loop.c' for single-byte characters. */ - #define CHAR unsigned char -*************** -*** 188,191 **** ---- 190,196 ---- - pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */ - /* we should check for invalid extglob pattern here */ -+ if (pe == 0) -+ return 0; -+ - /* if pe != se we have more of the pattern at the end of the extglob - pattern. Check the easy case first ( */ -*************** -*** 1016,1020 **** - char **result; - unsigned int result_size; -! char *directory_name, *filename, *dname; - unsigned int directory_len; - int free_dirname; /* flag */ ---- 1021,1025 ---- - char **result; - unsigned int result_size; -! char *directory_name, *filename, *dname, *fn; - unsigned int directory_len; - int free_dirname; /* flag */ -*************** -*** 1032,1035 **** ---- 1037,1052 ---- - /* Find the filename. */ - filename = strrchr (pathname, '/'); -+ #if defined (EXTENDED_GLOB) -+ if (filename && extended_glob) -+ { -+ fn = glob_dirscan (pathname, '/'); -+ #if DEBUG_MATCHING -+ if (fn != filename) -+ fprintf (stderr, "glob_filename: glob_dirscan: fn (%s) != filename (%s)\n", fn ? fn : "(null)", filename); -+ #endif -+ filename = fn; -+ } -+ #endif -+ - if (filename == NULL) - { -*** ../bash-4.3-patched/lib/glob/gmisc.c 2014-03-28 10:54:23.000000000 -0400 ---- lib/glob/gmisc.c 2014-05-02 09:35:57.000000000 -0400 -*************** -*** 43,46 **** ---- 43,48 ---- - #define WRPAREN L')' - -+ extern char *glob_patscan __P((char *, char *, int)); -+ - /* Return 1 of the first character of WSTRING could match the first - character of pattern WPAT. Wide character version. */ -*************** -*** 376,377 **** ---- 378,410 ---- - return matlen; - } -+ -+ /* Skip characters in PAT and return the final occurrence of DIRSEP. This -+ is only called when extended_glob is set, so we have to skip over extglob -+ patterns x(...) */ -+ char * -+ glob_dirscan (pat, dirsep) -+ char *pat; -+ int dirsep; -+ { -+ char *p, *d, *pe, *se; -+ -+ d = pe = se = 0; -+ for (p = pat; p && *p; p++) -+ { -+ if (extglob_pattern_p (p)) -+ { -+ if (se == 0) -+ se = p + strlen (p) - 1; -+ pe = glob_patscan (p + 2, se, 0); -+ if (pe == 0) -+ continue; -+ else if (*pe == 0) -+ break; -+ p = pe - 1; /* will do increment above */ -+ continue; -+ } -+ if (*p == dirsep) -+ d = p; -+ } -+ return d; -+ } - -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 15 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 16 - - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-017 b/src/patches/bash/bash43-017 deleted file mode 100644 index 4016fb934..000000000 --- a/src/patches/bash/bash43-017 +++ /dev/null @@ -1,51 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-017 - -Bug-Reported-by: Dan Douglas ormaaj@gmail.com -Bug-Reference-ID: 7781746.RhfoTROLxF@smorgbox -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00026.html - -Bug-Description: - -The code that creates local variables should not clear the `invisible' -attribute when returning an existing local variable. Let the code that -actually assigns a value clear it. - -Patch (apply with `patch -p0'): -*** ../bash-4.3-patched/variables.c 2014-02-14 11:55:12.000000000 -0500 ---- variables.c 2014-05-07 10:53:57.000000000 -0400 -*************** -*** 2198,2205 **** - old_var = find_variable (name); - if (old_var && local_p (old_var) && old_var->context == variable_context) -! { -! VUNSETATTR (old_var, att_invisible); /* XXX */ -! return (old_var); -! } - - was_tmpvar = old_var && tempvar_p (old_var); ---- 2260,2264 ---- - old_var = find_variable (name); - if (old_var && local_p (old_var) && old_var->context == variable_context) -! return (old_var); - - was_tmpvar = old_var && tempvar_p (old_var); - -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 16 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 17 - - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-018 b/src/patches/bash/bash43-018 deleted file mode 100644 index 39499f663..000000000 --- a/src/patches/bash/bash43-018 +++ /dev/null @@ -1,44 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-018 - -Bug-Reported-by: Geir Hauge geir.hauge@gmail.com -Bug-Reference-ID: CAO-BiTLOvfPXDypg61jcBausADrxUKJejakV2WTWP26cW0=rgA@mail.gmail.com -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00040.html - -Bug-Description: - -When assigning an array variable using the compound assignment syntax, -but using `declare' with the rhs of the compound assignment quoted, the -shell did not mark the variable as visible after successfully performing -the assignment. - -Patch (apply with `patch -p0'): -*** ../bash-4.3-patched/arrayfunc.c 2014-03-28 10:54:21.000000000 -0400 ---- arrayfunc.c 2014-05-12 11:19:00.000000000 -0400 -*************** -*** 180,183 **** ---- 180,184 ---- - FREE (newval); - -+ VUNSETATTR (entry, att_invisible); /* no longer invisible */ - return (entry); - } - -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 17 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 18 - - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-019 b/src/patches/bash/bash43-019 deleted file mode 100644 index a93714beb..000000000 --- a/src/patches/bash/bash43-019 +++ /dev/null @@ -1,84 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-019 - -Bug-Reported-by: John Lenton -Bug-Reference-ID: -Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476 - -Bug-Description: - -The -t timeout option to `read' does not work when the -e option is used. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/lib/readline/input.c 2014-01-10 15:07:08.000000000 -0500 ---- lib/readline/input.c 2014-05-22 18:40:59.000000000 -0400 -*************** -*** 535,540 **** ---- 538,551 ---- - else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM) - return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF); -+ /* keyboard-generated signals of interest */ - else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT) - RL_CHECK_SIGNALS (); -+ /* non-keyboard-generated signals of interest */ -+ else if (_rl_caught_signal == SIGALRM -+ #if defined (SIGVTALRM) -+ || _rl_caught_signal == SIGVTALRM -+ #endif -+ ) -+ RL_CHECK_SIGNALS (); - - if (rl_signal_event_hook) -*** ../bash-4.3-patched/builtins/read.def 2013-09-02 11:54:00.000000000 -0400 ---- builtins/read.def 2014-05-08 11:43:35.000000000 -0400 -*************** -*** 443,447 **** - #if defined (READLINE) - if (edit) -! add_unwind_protect (reset_attempted_completion_function, (char *)NULL); - #endif - falarm (tmsec, tmusec); ---- 443,450 ---- - #if defined (READLINE) - if (edit) -! { -! add_unwind_protect (reset_attempted_completion_function, (char *)NULL); -! add_unwind_protect (bashline_reset_event_hook, (char *)NULL); -! } - #endif - falarm (tmsec, tmusec); -*************** -*** 1022,1025 **** ---- 1025,1029 ---- - old_attempted_completion_function = rl_attempted_completion_function; - rl_attempted_completion_function = (rl_completion_func_t *)NULL; -+ bashline_set_event_hook (); - if (itext) - { -*************** -*** 1033,1036 **** ---- 1037,1041 ---- - rl_attempted_completion_function = old_attempted_completion_function; - old_attempted_completion_function = (rl_completion_func_t *)NULL; -+ bashline_reset_event_hook (); - - if (ret == 0) -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 18 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 19 - - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-020 b/src/patches/bash/bash43-020 deleted file mode 100644 index 5f533ef8d..000000000 --- a/src/patches/bash/bash43-020 +++ /dev/null @@ -1,110 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-020 - -Bug-Reported-by: Jared Yanovich slovichon@gmail.com -Bug-Reference-ID: 20140417073654.GB26875@nightderanger.psc.edu -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00065.html - -Bug-Description: - -When PS2 contains a command substitution, here-documents entered in an -interactive shell can sometimes cause a segmentation fault. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/shell.h 2012-12-25 21:11:01.000000000 -0500 ---- shell.h 2014-06-03 09:24:28.000000000 -0400 -*************** -*** 169,173 **** - int expand_aliases; - int echo_input_at_read; -! - } sh_parser_state_t; - ---- 169,174 ---- - int expand_aliases; - int echo_input_at_read; -! int need_here_doc; -! - } sh_parser_state_t; - -*** ../bash-4.3-patched/parse.y 2014-05-14 09:16:40.000000000 -0400 ---- parse.y 2014-04-30 09:27:59.000000000 -0400 -*************** -*** 2643,2647 **** - - r = 0; -! while (need_here_doc) - { - parser_state |= PST_HEREDOC; ---- 2643,2647 ---- - - r = 0; -! while (need_here_doc > 0) - { - parser_state |= PST_HEREDOC; -*************** -*** 6076,6079 **** ---- 6076,6080 ---- - ps->expand_aliases = expand_aliases; - ps->echo_input_at_read = echo_input_at_read; -+ ps->need_here_doc = need_here_doc; - - ps->token = token; -*************** -*** 6124,6127 **** ---- 6125,6129 ---- - expand_aliases = ps->expand_aliases; - echo_input_at_read = ps->echo_input_at_read; -+ need_here_doc = ps->need_here_doc; - - FREE (token); -*** ../bash-4.3-patched/y.tab.c 2014-04-07 11:56:12.000000000 -0400 ---- y.tab.c 2014-07-30 09:55:57.000000000 -0400 -*************** -*** 4955,4959 **** - - r = 0; -! while (need_here_doc) - { - parser_state |= PST_HEREDOC; ---- 5151,5155 ---- - - r = 0; -! while (need_here_doc > 0) - { - parser_state |= PST_HEREDOC; -*************** -*** 8388,8391 **** ---- 8584,8588 ---- - ps->expand_aliases = expand_aliases; - ps->echo_input_at_read = echo_input_at_read; -+ ps->need_here_doc = need_here_doc; - - ps->token = token; -*************** -*** 8436,8439 **** ---- 8633,8637 ---- - expand_aliases = ps->expand_aliases; - echo_input_at_read = ps->echo_input_at_read; -+ need_here_doc = ps->need_here_doc; - - FREE (token); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 19 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 20 - - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-021 b/src/patches/bash/bash43-021 deleted file mode 100644 index fd1c945ec..000000000 --- a/src/patches/bash/bash43-021 +++ /dev/null @@ -1,52 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-021 - -Bug-Reported-by: Jared Yanovich slovichon@gmail.com -Bug-Reference-ID: 20140625225019.GJ17044@nightderanger.psc.edu -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00070.html - -Bug-Description: - -When the readline `revert-all-at-newline' option is set, pressing newline -when the current line is one retrieved from history results in a double free -and a segmentation fault. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/lib/readline/misc.c 2012-09-01 18:03:11.000000000 -0400 ---- lib/readline/misc.c 2014-06-30 13:41:19.000000000 -0400 -*************** -*** 462,465 **** ---- 462,466 ---- - /* Set up rl_line_buffer and other variables from history entry */ - rl_replace_from_history (entry, 0); /* entry->line is now current */ -+ entry->data = 0; /* entry->data is now current undo list */ - /* Undo all changes to this history entry */ - while (rl_undo_list) -*************** -*** 469,473 **** - FREE (entry->line); - entry->line = savestring (rl_line_buffer); -- entry->data = 0; - } - entry = previous_history (); ---- 470,473 ---- - -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 20 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 21 - - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-022 b/src/patches/bash/bash43-022 deleted file mode 100644 index 7ce39ec0a..000000000 --- a/src/patches/bash/bash43-022 +++ /dev/null @@ -1,56 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-022 - -Bug-Reported-by: scorp.dev.null@gmail.com -Bug-Reference-ID: E1WxXw8-0007iE-Bi@pcm14 -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00061.html - -Bug-Description: - -Using nested pipelines within loops with the `lastpipe' option set can result -in a segmentation fault. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/execute_cmd.c 2014-01-31 10:54:52.000000000 -0500 ---- execute_cmd.c 2014-06-19 08:05:49.000000000 -0400 -*************** -*** 2410,2414 **** - lstdin = wait_for (lastpid); - #if defined (JOB_CONTROL) -! exec_result = job_exit_status (lastpipe_jid); - #endif - unfreeze_jobs_list (); ---- 2425,2438 ---- - lstdin = wait_for (lastpid); - #if defined (JOB_CONTROL) -! /* If wait_for removes the job from the jobs table, use result of last -! command as pipeline's exit status as usual. The jobs list can get -! frozen and unfrozen at inconvenient times if there are multiple pipelines -! running simultaneously. */ -! if (INVALID_JOB (lastpipe_jid) == 0) -! exec_result = job_exit_status (lastpipe_jid); -! else if (pipefail_opt) -! exec_result = exec_result | lstdin; /* XXX */ -! /* otherwise we use exec_result */ -! - #endif - unfreeze_jobs_list (); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 21 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 22 - - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-023 b/src/patches/bash/bash43-023 deleted file mode 100644 index d1e4e9d7c..000000000 --- a/src/patches/bash/bash43-023 +++ /dev/null @@ -1,104 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-023 - -Bug-Reported-by: Tim Friske me@timfriske.com -Bug-Reference-ID: CAM1RzOcOR9zzC2i+aeES6LtbHNHoOV+0pZEYPrqxv_QAii-RXA@mail.gmail.com -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00056.html - -Bug-Description: - -Bash does not correctly parse process substitution constructs that contain -unbalanced parentheses as part of the contained command. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/subst.h 2014-01-11 21:02:27.000000000 -0500 ---- subst.h 2014-07-20 17:25:01.000000000 -0400 -*************** -*** 83,87 **** - Start extracting at (SINDEX) as if we had just seen "<(". - Make (SINDEX) get the position just after the matching ")". */ -! extern char *extract_process_subst __P((char *, char *, int *)); - #endif /* PROCESS_SUBSTITUTION */ - ---- 83,87 ---- - Start extracting at (SINDEX) as if we had just seen "<(". - Make (SINDEX) get the position just after the matching ")". */ -! extern char *extract_process_subst __P((char *, char *, int *, int)); - #endif /* PROCESS_SUBSTITUTION */ - -*** ../bash-4.3-patched/subst.c 2014-05-15 08:26:45.000000000 -0400 ---- subst.c 2014-07-20 17:26:44.000000000 -0400 -*************** -*** 1193,1202 **** - Make (SINDEX) get the position of the matching ")". */ /*))*/ - char * -! extract_process_subst (string, starter, sindex) - char *string; - char *starter; - int *sindex; - { - return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND)); - } - #endif /* PROCESS_SUBSTITUTION */ ---- 1193,1208 ---- - Make (SINDEX) get the position of the matching ")". */ /*))*/ - char * -! extract_process_subst (string, starter, sindex, xflags) - char *string; - char *starter; - int *sindex; -+ int xflags; - { -+ #if 0 - return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND)); -+ #else -+ xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0); -+ return (xparse_dolparen (string, string+*sindex, sindex, xflags)); -+ #endif - } - #endif /* PROCESS_SUBSTITUTION */ -*************** -*** 1786,1790 **** - if (string[si] == '\0') - CQ_RETURN(si); -! temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si); - free (temp); /* no SX_ALLOC here */ - i = si; ---- 1792,1796 ---- - if (string[si] == '\0') - CQ_RETURN(si); -! temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si, 0); - free (temp); /* no SX_ALLOC here */ - i = si; -*************** -*** 8250,8254 **** - t_index = sindex + 1; /* skip past both '<' and LPAREN */ - -! temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index); /*))*/ - sindex = t_index; - ---- 8256,8260 ---- - t_index = sindex + 1; /* skip past both '<' and LPAREN */ - -! temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index, 0); /*))*/ - sindex = t_index; - -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 22 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 23 - - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-024 b/src/patches/bash/bash43-024 deleted file mode 100644 index a24b8fbbc..000000000 --- a/src/patches/bash/bash43-024 +++ /dev/null @@ -1,54 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-024 - -Bug-Reported-by: Corentin Peuvrel cpeuvrel@pom-monitoring.com -Bug-Reference-ID: 53CE9E5D.6050203@pom-monitoring.com -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-07/msg00021.html - -Bug-Description: - -Indirect variable references do not work correctly if the reference -variable expands to an array reference using a subscript other than 0 -(e.g., foo='bar[1]' ; echo ${!foo}). - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/subst.c 2014-06-03 09:32:44.000000000 -0400 ---- subst.c 2014-07-23 09:58:19.000000000 -0400 -*************** -*** 7375,7379 **** - - if (want_indir) -! tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at); - else - tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind); ---- 7445,7455 ---- - - if (want_indir) -! { -! tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at); -! /* Turn off the W_ARRAYIND flag because there is no way for this function -! to return the index we're supposed to be using. */ -! if (tdesc && tdesc->flags) -! tdesc->flags &= ~W_ARRAYIND; -! } - else - tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind); -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 23 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 24 - - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash43-025 b/src/patches/bash/bash43-025 deleted file mode 100644 index 721aca030..000000000 --- a/src/patches/bash/bash43-025 +++ /dev/null @@ -1,123 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.3 -Patch-ID: bash43-025 - -Bug-Reported-by: Stephane Chazelas stephane.chazelas@gmail.com -Bug-Reference-ID: -Bug-Reference-URL: - -Bug-Description: - -Under certain circumstances, bash will execute user code while processing the -environment for exported function definitions. - -Patch (apply with `patch -p0'): - -*** ../bash-4.3-patched/builtins/common.h 2013-07-08 16:54:47.000000000 -0400 ---- builtins/common.h 2014-09-12 14:25:47.000000000 -0400 -*************** -*** 34,37 **** ---- 49,54 ---- - #define SEVAL_PARSEONLY 0x020 - #define SEVAL_NOLONGJMP 0x040 -+ #define SEVAL_FUNCDEF 0x080 /* only allow function definitions */ -+ #define SEVAL_ONECMD 0x100 /* only allow a single command */ - - /* Flags for describe_command, shared between type.def and command.def */ -*** ../bash-4.3-patched/builtins/evalstring.c 2014-02-11 09:42:10.000000000 -0500 ---- builtins/evalstring.c 2014-09-14 14:15:13.000000000 -0400 -*************** -*** 309,312 **** ---- 313,324 ---- - struct fd_bitmap *bitmap; - -+ if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def) -+ { -+ internal_warning ("%s: ignoring function definition attempt", from_file); -+ should_jump_to_top_level = 0; -+ last_result = last_command_exit_value = EX_BADUSAGE; -+ break; -+ } -+ - bitmap = new_fd_bitmap (FD_BITMAP_SIZE); - begin_unwind_frame ("pe_dispose"); -*************** -*** 369,372 **** ---- 381,387 ---- - dispose_fd_bitmap (bitmap); - discard_unwind_frame ("pe_dispose"); -+ -+ if (flags & SEVAL_ONECMD) -+ break; - } - } -*** ../bash-4.3-patched/variables.c 2014-05-15 08:26:50.000000000 -0400 ---- variables.c 2014-09-14 14:23:35.000000000 -0400 -*************** -*** 359,369 **** - strcpy (temp_string + char_index + 1, string); - -! if (posixly_correct == 0 || legal_identifier (name)) -! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST); -! -! /* Ancient backwards compatibility. Old versions of bash exported -! functions like name()=() {...} */ -! if (name[char_index - 1] == ')' && name[char_index - 2] == '(') -! name[char_index - 2] = '\0'; - - if (temp_var = find_function (name)) ---- 364,372 ---- - strcpy (temp_string + char_index + 1, string); - -! /* Don't import function names that are invalid identifiers from the -! environment, though we still allow them to be defined as shell -! variables. */ -! if (legal_identifier (name)) -! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD); - - if (temp_var = find_function (name)) -*************** -*** 382,389 **** - report_error (_("error importing function definition for `%s'"), name); - }
Signed-off-by: Peter Müller peter.mueller@ipfire.org --- config/rootfiles/core/137/filelists/bash | 1 + config/rootfiles/core/137/filelists/readline | 1 + 2 files changed, 2 insertions(+) create mode 120000 config/rootfiles/core/137/filelists/bash create mode 120000 config/rootfiles/core/137/filelists/readline
diff --git a/config/rootfiles/core/137/filelists/bash b/config/rootfiles/core/137/filelists/bash new file mode 120000 index 000000000..de970cb1d --- /dev/null +++ b/config/rootfiles/core/137/filelists/bash @@ -0,0 +1 @@ +../../../common/bash \ No newline at end of file diff --git a/config/rootfiles/core/137/filelists/readline b/config/rootfiles/core/137/filelists/readline new file mode 120000 index 000000000..84209f189 --- /dev/null +++ b/config/rootfiles/core/137/filelists/readline @@ -0,0 +1 @@ +../../../common/readline \ No newline at end of file
Hi,
On 7 Oct 2019, at 19:16, peter.mueller@ipfire.org wrote:
Signed-off-by: Peter Müller peter.mueller@ipfire.org
lfs/readline | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/lfs/readline b/lfs/readline index 3e9e2a3d5..4f7329766 100644 --- a/lfs/readline +++ b/lfs/readline @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2018 IPFire Team info@ipfire.org # +# Copyright (C) 2007-2019 IPFire Team info@ipfire.org # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@
include Config
-VER = 6.3 +VER = 8.0
THISAPP = readline-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 33c8fb279e981274f485fd91da77e94a +$(DL_FILE)_MD5 = 7e6c1f16aee3244a69aba6e438295ca3
install : $(TARGET)
@@ -71,9 +71,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
- for i in $$(seq 1 6); do \
cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/readline/readline63-$$(printf "%03d" "$${i}") || exit 1; \
- done
- cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/readline/readline80-001
I would have kept the loop, even for one patch to be able to extend it easier later.
cd $(DIR_APP) && ./configure --prefix=/usr --disable-static cd $(DIR_APP) && make $(MAKETUNING) SHLIB_LIBS=-lncurses -- 2.16.4
Hi,
This patchset looks okay, although it could have been slightly smaller. You do not need to split the changes in the lfs files from the root files. That should be one patch per package.
On 7 Oct 2019, at 19:15, peter.mueller@ipfire.org wrote:
Signed-off-by: Peter Müller peter.mueller@ipfire.org
lfs/bash | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/lfs/bash b/lfs/bash index 09b4e71e6..79c21896b 100644 --- a/lfs/bash +++ b/lfs/bash @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2018 IPFire Team info@ipfire.org # +# Copyright (C) 2007-2019 IPFire Team info@ipfire.org # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@
include Config
-VER = 4.3 +VER = 5.0
THISAPP = bash-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -53,7 +53,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 81348932d5da294953e15d4814c74dd1 +$(DL_FILE)_MD5 = 2b44b47b905be16f45709648f671820b
install : $(TARGET)
@@ -87,8 +87,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) sed -e "s/filename, RTLD_LAZY/filename, RTLD_NOW/" \ -i $(DIR_APP)/builtins/enable.def
- for i in $$(seq 1 30); do \
cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash43-$$(printf "%03d" "$${i}") || exit 1; \
for i in $$(seq 1 11); do \
cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash50-$$(printf "%03d" "$${i}") || exit 1; \
done
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash-4.0-paths-1.patch
-- 2.16.4