diff options
Diffstat (limited to 'testing/source/bash/bash-4.0-patches')
24 files changed, 0 insertions, 2017 deletions
diff --git a/testing/source/bash/bash-4.0-patches/bash40-001 b/testing/source/bash/bash-4.0-patches/bash40-001 deleted file mode 100644 index 5c6bb34b..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-001 +++ /dev/null @@ -1,162 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-001 - -Bug-Reported-by: Mike Frysinger <vapier@gentoo.org> -Bug-Reference-ID: <200902211821.42188.vapier@gentoo.org> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00147.html - -Bug-Description: - -Bash has problems parsing certain constructs inside Posix-style $(...) -command substitutions, mostly with backslash-quoting and reserved word -recognition. This is an issue because the contents are parsed at the -time the word containing the command substitution is read. - -Patch: - -*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500 ---- parse.y 2009-03-06 20:32:35.000000000 -0500 -*************** -*** 2928,2931 **** ---- 2932,2936 ---- - #define LEX_HEREDELIM 0x100 /* reading here-doc delimiter */ - #define LEX_STRIPDOC 0x200 /* <<- strip tabs from here doc delim */ -+ #define LEX_INWORD 0x400 - - #define COMSUB_META(ch) ((ch) == ';' || (ch) == '&' || (ch) == '|') -*************** -*** 3180,3184 **** - int *lenp, flags; - { -! int count, ch, peekc, tflags, lex_rwlen, lex_firstind; - int nestlen, ttranslen, start_lineno; - char *ret, *nestret, *ttrans, *heredelim; ---- 3188,3192 ---- - int *lenp, flags; - { -! int count, ch, peekc, tflags, lex_rwlen, lex_wlen, lex_firstind; - int nestlen, ttranslen, start_lineno; - char *ret, *nestret, *ttrans, *heredelim; -*************** -*** 3201,3205 **** - - start_lineno = line_number; -! lex_rwlen = 0; - - heredelim = 0; ---- 3209,3213 ---- - - start_lineno = line_number; -! lex_rwlen = lex_wlen = 0; - - heredelim = 0; -*************** -*** 3268,3271 **** ---- 3276,3319 ---- - } - -+ if (tflags & LEX_PASSNEXT) /* last char was backslash */ -+ { -+ /*itrace("parse_comsub:%d: lex_passnext -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/ -+ tflags &= ~LEX_PASSNEXT; -+ if (qc != '\'' && ch == '\n') /* double-quoted \<newline> disappears. */ -+ { -+ if (retind > 0) -+ retind--; /* swallow previously-added backslash */ -+ continue; -+ } -+ -+ RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); -+ if MBTEST(ch == CTLESC || ch == CTLNUL) -+ ret[retind++] = CTLESC; -+ ret[retind++] = ch; -+ continue; -+ } -+ -+ /* If this is a shell break character, we are not in a word. If not, -+ we either start or continue a word. */ -+ if MBTEST(shellbreak (ch)) -+ { -+ tflags &= ~LEX_INWORD; -+ /*itrace("parse_comsub:%d: lex_inword -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/ -+ } -+ else -+ { -+ if (tflags & LEX_INWORD) -+ { -+ lex_wlen++; -+ /*itrace("parse_comsub:%d: lex_inword == 1 ch = `%c' lex_wlen = %d (%d)", line_number, ch, lex_wlen, __LINE__);*/ -+ } -+ else -+ { -+ /*itrace("parse_comsub:%d: lex_inword -> 1 ch = `%c' (%d)", line_number, ch, __LINE__);*/ -+ tflags |= LEX_INWORD; -+ lex_wlen = 0; -+ } -+ } -+ - /* Skip whitespace */ - if MBTEST(shellblank (ch) && lex_rwlen == 0) -*************** -*** 3400,3428 **** - } - else -! ch = peekc; /* fall through and continue XXX - this skips comments if peekc == '#' */ - } -! /* Not exactly right yet, should handle shell metacharacters, too. If -! any changes are made to this test, make analogous changes to subst.c: -! extract_delimited_string(). */ -! else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || shellblank (ret[retind - 1]))) - tflags |= LEX_INCOMMENT; - -! if (tflags & LEX_PASSNEXT) /* last char was backslash */ -! { -! tflags &= ~LEX_PASSNEXT; -! if (qc != '\'' && ch == '\n') /* double-quoted \<newline> disappears. */ -! { -! if (retind > 0) -! retind--; /* swallow previously-added backslash */ -! continue; -! } -! -! RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); -! if MBTEST(ch == CTLESC || ch == CTLNUL) -! ret[retind++] = CTLESC; -! ret[retind++] = ch; -! continue; -! } -! else if MBTEST(ch == CTLESC || ch == CTLNUL) /* special shell escapes */ - { - RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); ---- 3442,3454 ---- - } - else -! ch = peekc; /* fall through and continue XXX */ - } -! else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (((tflags & LEX_RESWDOK) && lex_rwlen == 0) || ((tflags & LEX_INWORD) && lex_wlen == 0))) -! { -! /*itrace("parse_comsub:%d: lex_incomment -> 1 (%d)", line_number, __LINE__);*/ - tflags |= LEX_INCOMMENT; -+ } - -! if MBTEST(ch == CTLESC || ch == CTLNUL) /* special shell escapes */ - { - RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-002 b/testing/source/bash/bash-4.0-patches/bash40-002 deleted file mode 100644 index 18bd25e7..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-002 +++ /dev/null @@ -1,43 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-002 - -Bug-Reported-by: phil@Arcturus.universe -Bug-Reference-ID: <20090221143709.13878.qmail@Arcturus.universe> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00142.html - -Bug-Description: - -A line inadvertenly omitted from a submitted patch results in core dumps -when attempting filename completion while using the bash-completion -package. - -Patch: - -*** ../bash-4.0/pcomplete.c 2009-02-01 17:12:31.000000000 -0500 ---- pcomplete.c 2009-02-22 17:08:25.000000000 -0500 -*************** -*** 1033,1036 **** ---- 1033,1037 ---- - - pps = &ps; -+ save_parser_state (pps); - begin_unwind_frame ("gen-shell-function-matches"); - add_unwind_protect (restore_parser_state, (char *)pps); -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-003 b/testing/source/bash/bash-4.0-patches/bash40-003 deleted file mode 100644 index cc941d5e..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-003 +++ /dev/null @@ -1,70 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-003 - -Bug-Reported-by: Bernd Eggink <monoped@sudrala.de> -Bug-Reference-ID: <49A323F5.60503@sudrala.de> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00177.html - -Bug-Description: - -Under certain circumstances, constructs containing command substitutions -prevent PS1 from being re-evaluated and updated before being displayed. - -Patch: - -*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500 ---- parse.y 2009-02-25 15:58:25.000000000 -0500 -*************** -*** 1616,1623 **** - int *ret; - -! ret = (int *)xmalloc (3 * sizeof (int)); - ret[0] = last_read_token; - ret[1] = token_before_that; - ret[2] = two_tokens_ago; - return ret; - } ---- 1616,1624 ---- - int *ret; - -! ret = (int *)xmalloc (4 * sizeof (int)); - ret[0] = last_read_token; - ret[1] = token_before_that; - ret[2] = two_tokens_ago; -+ ret[3] = current_token; - return ret; - } -*************** -*** 1632,1635 **** ---- 1633,1637 ---- - token_before_that = ts[1]; - two_tokens_ago = ts[2]; -+ current_token = ts[3]; - } - -*************** -*** 2669,2672 **** ---- 2671,2675 ---- - word_desc_to_read = (WORD_DESC *)NULL; - -+ current_token = '\n'; /* XXX */ - last_read_token = '\n'; - token_to_read = '\n'; -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-004 b/testing/source/bash/bash-4.0-patches/bash40-004 deleted file mode 100644 index 6ab6c4ee..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-004 +++ /dev/null @@ -1,47 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-004 - -Bug-Reported-by: Mike Frysinger <vapier@gentoo.org> -Bug-Reference-ID: <200902231720.30519.vapier@gentoo.org> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00176.html - -Bug-Description: - -In some cases, enabling the `checkjobs' shell option will cause the shell -to core dump when executing the `exit' builtin. - -Patch: - -*** ../bash-4.0/builtins/exit.def 2009-01-04 14:32:22.000000000 -0500 ---- builtins/exit.def 2009-02-23 22:56:58.000000000 -0500 -*************** -*** 114,118 **** - if (jobs[i] && STOPPED (i)) - stopmsg = JSTOPPED; -! else if (check_jobs_at_exit && stopmsg == 0 && RUNNING (i)) - stopmsg = JRUNNING; - ---- 114,118 ---- - if (jobs[i] && STOPPED (i)) - stopmsg = JSTOPPED; -! else if (check_jobs_at_exit && stopmsg == 0 && jobs[i] && RUNNING (i)) - stopmsg = JRUNNING; - -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-005 b/testing/source/bash/bash-4.0-patches/bash40-005 deleted file mode 100644 index ccfde66d..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-005 +++ /dev/null @@ -1,63 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-005 - -Bug-Reported-by: Pierre Gaston <pierre.gaston@gmail.com> -Bug-Reference-ID: <c440c9800902242338n69f594a4nd66b8748def9cf18@mail.gmail.com> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00206.html - -Bug-Description: - -The `declare' builtin dumped core when attempting to assign associative -array indices containing some special characters, even when they were -quoted before being expanded. - -Patch: - -*** ../bash-4.0/builtins/declare.def 2009-01-04 14:32:22.000000000 -0500 ---- builtins/declare.def 2009-02-26 11:40:16.000000000 -0500 -*************** -*** 296,299 **** ---- 296,306 ---- - if (t = strchr (name, '[')) /* ] */ - { -+ /* If offset != 0 we have already validated any array reference */ -+ if (offset == 0 && valid_array_reference (name) == 0) -+ { -+ sh_invalidid (name); -+ assign_error++; -+ NEXT_VARIABLE (); -+ } - subscript_start = t; - *t = '\0'; -*************** -*** 485,489 **** - /* declare -a name[[n]] or declare name[n] makes name an indexed - array variable. */ -! else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0) - var = convert_var_to_array (var); - #endif /* ARRAY_VARS */ ---- 492,496 ---- - /* declare -a name[[n]] or declare name[n] makes name an indexed - array variable. */ -! else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0 && assoc_p (var) == 0) - var = convert_var_to_array (var); - #endif /* ARRAY_VARS */ -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-006 b/testing/source/bash/bash-4.0-patches/bash40-006 deleted file mode 100644 index 3d044c72..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-006 +++ /dev/null @@ -1,43 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-006 - -Bug-Reported-by: Evgeniy Zhemchugov <jini.zh@gmail.com> -Bug-Reference-ID: <e7bc8dd30902241016m8bd543ej775717d007df975b@mail.gmail.com> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00202.html - -Bug-Description: - -Bash did not parse pipelines using the |& construct correctly if the -pipeline elements were not simple commands. - -Patch: - -*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500 ---- parse.y 2009-02-25 17:25:56.000000000 -0500 -*************** -*** 4478,4481 **** ---- 4478,4482 ---- - case AND_AND: - case BANG: -+ case BAR_AND: - case DO: - case DONE: -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-007 b/testing/source/bash/bash-4.0-patches/bash40-007 deleted file mode 100644 index 29071e12..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-007 +++ /dev/null @@ -1,263 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-007 - -Bug-Reported-by: AnMaster <anmaster@tele2.se> -Bug-Reference-ID: <49A41C18.80807@tele2.se> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00188.html - -Bug-Description: - -Bash had a number of problems parsing associative array subscripts containing -special characters. The subscripts are supposed to be read as if they are -enclosed between double quotes. - -Patch: - -*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500 ---- parse.y 2009-02-25 17:25:56.000000000 -0500 -*************** -*** 2919,2922 **** ---- 2919,2923 ---- - #define P_COMMAND 0x08 /* parsing a command, so look for comments */ - #define P_BACKQUOTE 0x10 /* parsing a backquoted command substitution */ -+ #define P_ARRAYSUB 0x20 /* parsing a [...] array subscript for assignment */ - - /* Lexical state while parsing a grouping construct or $(...). */ -*************** -*** 3134,3137 **** ---- 3134,3139 ---- - FREE (nestret); - } -+ else if ((flags & P_ARRAYSUB) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ -+ goto parse_dollar_word; - } - /* Parse an old-style command substitution within double quotes as a -*************** -*** 3150,3153 **** ---- 3150,3154 ---- - /* check for $(), $[], or ${} inside quoted string. */ - { -+ parse_dollar_word: - if (open == ch) /* undo previous increment */ - count--; -*************** -*** 4277,4281 **** - (token_index == 0 && (parser_state&PST_COMPASSIGN)))) - { -! ttok = parse_matched_pair (cd, '[', ']', &ttoklen, 0); - if (ttok == &matched_pair_error) - return -1; /* Bail immediately. */ ---- 4277,4281 ---- - (token_index == 0 && (parser_state&PST_COMPASSIGN)))) - { -! ttok = parse_matched_pair (cd, '[', ']', &ttoklen, P_ARRAYSUB); - if (ttok == &matched_pair_error) - return -1; /* Bail immediately. */ -*** ../bash-4.0/arrayfunc.c 2009-01-04 14:32:21.000000000 -0500 ---- arrayfunc.c 2009-02-25 07:58:54.000000000 -0500 -*************** -*** 605,666 **** - } - -! /* This function assumes s[i] == '['; returns with s[ret] == ']' if -! an array subscript is correctly parsed. */ -! int -! skipsubscript (s, i) -! const char *s; -! int i; -! { -! int count, c; -! #if defined (HANDLE_MULTIBYTE) -! mbstate_t state, state_bak; -! size_t slength, mblength; -! #endif -! -! #if defined (HANDLE_MULTIBYTE) -! memset (&state, '\0', sizeof (mbstate_t)); -! slength = strlen (s + i); -! #endif -! -! count = 1; -! while (count) -! { -! /* Advance one (possibly multibyte) character in S starting at I. */ -! #if defined (HANDLE_MULTIBYTE) -! if (MB_CUR_MAX > 1) -! { -! state_bak = state; -! mblength = mbrlen (s + i, slength, &state); -! -! if (MB_INVALIDCH (mblength)) -! { -! state = state_bak; -! i++; -! slength--; -! } -! else if (MB_NULLWCH (mblength)) -! return i; -! else -! { -! i += mblength; -! slength -= mblength; -! } -! } -! else -! #endif -! ++i; -! -! c = s[i]; -! -! if (c == 0) -! break; -! else if (c == '[') -! count++; -! else if (c == ']') -! count--; -! } -! -! return i; -! } - - /* This function is called with SUB pointing to just after the beginning ---- 605,609 ---- - } - -! /* skipsubscript moved to subst.c to use private functions. 2009/02/24. */ - - /* This function is called with SUB pointing to just after the beginning -*** ../bash-4.0/subst.c 2009-01-28 14:34:12.000000000 -0500 ---- subst.c 2009-02-25 09:18:33.000000000 -0500 -*************** -*** 223,226 **** ---- 223,227 ---- - static char *extract_delimited_string __P((char *, int *, char *, char *, char *, int)); - static char *extract_dollar_brace_string __P((char *, int *, int, int)); -+ static int skip_matched_pair __P((const char *, int, int, int, int)); - - static char *pos_params __P((char *, int, int, int)); -*************** -*** 1375,1378 **** ---- 1376,1480 ---- - #define CQ_RETURN(x) do { no_longjmp_on_fatal_error = 0; return (x); } while (0) - -+ /* This function assumes s[i] == open; returns with s[ret] == close; used to -+ parse array subscripts. FLAGS currently unused. */ -+ static int -+ skip_matched_pair (string, start, open, close, flags) -+ const char *string; -+ int start, open, close, flags; -+ { -+ int i, pass_next, backq, si, c, count; -+ size_t slen; -+ char *temp, *ss; -+ DECLARE_MBSTATE; -+ -+ slen = strlen (string + start) + start; -+ no_longjmp_on_fatal_error = 1; -+ -+ i = start + 1; /* skip over leading bracket */ -+ count = 1; -+ pass_next = backq = 0; -+ ss = (char *)string; -+ while (c = string[i]) -+ { -+ if (pass_next) -+ { -+ pass_next = 0; -+ if (c == 0) -+ CQ_RETURN(i); -+ ADVANCE_CHAR (string, slen, i); -+ continue; -+ } -+ else if (c == '\\') -+ { -+ pass_next = 1; -+ i++; -+ continue; -+ } -+ else if (backq) -+ { -+ if (c == '`') -+ backq = 0; -+ ADVANCE_CHAR (string, slen, i); -+ continue; -+ } -+ else if (c == '`') -+ { -+ backq = 1; -+ i++; -+ continue; -+ } -+ else if (c == open) -+ { -+ count++; -+ i++; -+ continue; -+ } -+ else if (c == close) -+ { -+ count--; -+ if (count == 0) -+ break; -+ i++; -+ continue; -+ } -+ else if (c == '\'' || c == '"') -+ { -+ i = (c == '\'') ? skip_single_quoted (ss, slen, ++i) -+ : skip_double_quoted (ss, slen, ++i); -+ /* no increment, the skip functions increment past the closing quote. */ -+ } -+ else if (c == '$' && (string[i+1] == LPAREN || string[i+1] == LBRACE)) -+ { -+ si = i + 2; -+ if (string[si] == '\0') -+ CQ_RETURN(si); -+ -+ if (string[i+1] == LPAREN) -+ temp = extract_delimited_string (ss, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND); /* ) */ -+ else -+ temp = extract_dollar_brace_string (ss, &si, 0, SX_NOALLOC); -+ i = si; -+ if (string[i] == '\0') /* don't increment i past EOS in loop */ -+ break; -+ i++; -+ continue; -+ } -+ else -+ ADVANCE_CHAR (string, slen, i); -+ } -+ -+ CQ_RETURN(i); -+ } -+ -+ #if defined (ARRAY_VARS) -+ int -+ skipsubscript (string, start) -+ const char *string; -+ int start; -+ { -+ return (skip_matched_pair (string, start, '[', ']', 0)); -+ } -+ #endif -+ - /* Skip characters in STRING until we find a character in DELIMS, and return - the index of that character. START is the index into string at which we -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-008 b/testing/source/bash/bash-4.0-patches/bash40-008 deleted file mode 100644 index 7a2576aa..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-008 +++ /dev/null @@ -1,49 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-008 - -Bug-Reported-by: Mike Frysinger <vapier@gentoo.org> -Bug-Reference-ID: <200902261030.54062.vapier@gentoo.org> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00230.html - -Bug-Description: - -Patch: - -*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500 ---- parse.y 2009-02-26 17:22:15.000000000 -0500 -*************** -*** 3443,3448 **** - else - shell_ungetc (peekc); -! tflags |= LEX_HEREDELIM; -! lex_firstind = -1; - continue; - } ---- 3443,3451 ---- - else - shell_ungetc (peekc); -! if (peekc != '<') -! { -! tflags |= LEX_HEREDELIM; -! lex_firstind = -1; -! } - continue; - } -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-009 b/testing/source/bash/bash-4.0-patches/bash40-009 deleted file mode 100644 index f5839192..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-009 +++ /dev/null @@ -1,61 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-009 - -Bug-Reported-by: "Chris F.A. Johnson" <cfajohnson@gmail.com> -Bug-Reference-ID: <4d6b7$49a88cec$cef88ba3$16813@TEKSAVVY.COM> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00255.html - -Bug-Description: - -When the read builtin returned due to a timeout supplied with the -t option, -it did not restore any modified terminal attribtues. - -Patch: - -*** ../bash-4.0/builtins/read.def 2009-01-15 23:11:21.000000000 -0500 ---- builtins/read.def 2009-03-02 10:15:39.000000000 -0500 -*************** -*** 370,381 **** - if (code) - { -! #if 0 - run_unwind_frame ("read_builtin"); -- return (EXECUTION_FAILURE); -- #else - input_string[i] = '\0'; /* make sure it's terminated */ -! retval = 128+SIGALRM;; - goto assign_vars; -- #endif - } - old_alrm = set_signal_handler (SIGALRM, sigalrm); ---- 370,381 ---- - if (code) - { -! /* Tricky. The top of the unwind-protect stack is the free of -! input_string. We want to run all the rest and use input_string, -! so we have to remove it from the stack. */ -! remove_unwind_protect (); - run_unwind_frame ("read_builtin"); - input_string[i] = '\0'; /* make sure it's terminated */ -! retval = 128+SIGALRM; - goto assign_vars; - } - old_alrm = set_signal_handler (SIGALRM, sigalrm); -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-010 b/testing/source/bash/bash-4.0-patches/bash40-010 deleted file mode 100644 index 3229c573..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-010 +++ /dev/null @@ -1,63 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-010 - -Bug-Reported-by: Mike Frysinger <vapier@gentoo.org> -Bug-Reference-ID: <200903030122.56206.vapier@gentoo.org> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00023.html - -Bug-Description: - -Bash has problems parsing comments in case statements when they appear in -$(...) subshells. - -Patch: - -*** ../bash-4.0/parse.y 2009-03-07 15:18:35.000000000 -0500 ---- parse.y 2009-03-07 14:16:32.000000000 -0500 -*************** -*** 3413,3419 **** - tflags &= ~LEX_RESWDOK; - } -! else if (shellbreak (ch) == 0) - { -! tflags &= ~LEX_RESWDOK; - /*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/ - } ---- 3415,3433 ---- - tflags &= ~LEX_RESWDOK; - } -! else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0))) -! ; /* don't modify LEX_RESWDOK if we're starting a comment */ -! else if MBTEST((tflags & LEX_INCASE) && ch != '\n') -! /* If we can read a reserved word and we're in case, we're at the -! point where we can read a new pattern list or an esac. We -! handle the esac case above. If we read a newline, we want to -! leave LEX_RESWDOK alone. If we read anything else, we want to -! turn off LEX_RESWDOK, since we're going to read a pattern list. */ - { -! tflags &= ~LEX_RESWDOK; -! /*itrace("parse_comsub:%d: lex_incase == 1 found `%c', lex_reswordok -> 0", line_number, ch);*/ -! } -! else if MBTEST(shellbreak (ch) == 0) -! { -! tflags &= ~LEX_RESWDOK; - /*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/ - } -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-011 b/testing/source/bash/bash-4.0-patches/bash40-011 deleted file mode 100644 index 61d1d3a8..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-011 +++ /dev/null @@ -1,49 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-011 - -Bug-Reported-by: Matt Zyzik <Matt@ice.filescope.com>n -Bug-Reference-ID: <20090312015018.C00741383ED@ice.filescope.com> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00092.html - -Bug-Description: - -When using the new |& operator following a simple command with a redirection, -the redirection of stderr through the pipe was not performed under certain -circumstances. - -Patch: - -*** ../bash-4.0-patched/parse.y 2009-03-08 21:24:47.000000000 -0400 ---- parse.y 2009-03-12 21:36:23.000000000 -0400 -*************** -*** 1123,1127 **** - REDIRECT *r; - -! tc = $1; - rd.dest = 1; - r = make_redirection (2, r_duplicating_output, rd); ---- 1123,1127 ---- - REDIRECT *r; - -! tc = $1->type == cm_simple ? (COMMAND *)$1->value.Simple : $1; - rd.dest = 1; - r = make_redirection (2, r_duplicating_output, rd); -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-012 b/testing/source/bash/bash-4.0-patches/bash40-012 deleted file mode 100644 index 014eae69..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-012 +++ /dev/null @@ -1,47 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-012 - -Bug-Reported-by: "Clark J. Wang" <dearvoid@gmail.com> -Bug-Reference-ID: <a96f63770903132300v7816dfb7hb7f48d46048bf3cb@mail.gmail.com> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00129.html - -Bug-Description: - -A case statement using the ;& pattern terminator followed immediately by -"esac" caused a core dump due to a null pointer dereference. - -Patch: - -*** ../bash-4.0-patched/execute_cmd.c 2009-02-13 16:41:41.000000000 -0500 ---- execute_cmd.c 2009-03-14 13:23:00.000000000 -0400 -*************** -*** 2931,2935 **** - } - while ((clauses->flags & CASEPAT_FALLTHROUGH) && (clauses = clauses->next)); -! if ((clauses->flags & CASEPAT_TESTNEXT) == 0) - EXIT_CASE (); - else ---- 2931,2935 ---- - } - while ((clauses->flags & CASEPAT_FALLTHROUGH) && (clauses = clauses->next)); -! if (clauses == 0 || (clauses->flags & CASEPAT_TESTNEXT) == 0) - EXIT_CASE (); - else -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-013 b/testing/source/bash/bash-4.0-patches/bash40-013 deleted file mode 100644 index df1fc493..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-013 +++ /dev/null @@ -1,153 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-013 - -Bug-Reported-by: jidanni@jidanni.org -Bug-Reference-ID: -Bug-Reference-URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=519165 - -Bug-Description: - -Though references to $@ when there are no positional parameters will now -cause the shell to exit if the `errexit' option has been enabled, constructs -such as ${@:-foo} should not cause an exit. - -Patch: - -*** ../bash-4.0-patched/subst.c 2009-03-08 21:24:39.000000000 -0400 ---- subst.c 2009-03-14 19:04:10.000000000 -0400 -*************** -*** 86,89 **** ---- 86,90 ---- - /* Flags for the `pflags' argument to param_expand() */ - #define PF_NOCOMSUB 0x01 /* Do not perform command substitution */ -+ #define PF_IGNUNBOUND 0x02 /* ignore unbound vars even if -u set */ - - /* These defs make it easier to use the editor. */ -*************** -*** 264,268 **** - static int chk_arithsub __P((const char *, int)); - -! static WORD_DESC *parameter_brace_expand_word __P((char *, int, int)); - static WORD_DESC *parameter_brace_expand_indir __P((char *, int, int, int *, int *)); - static WORD_DESC *parameter_brace_expand_rhs __P((char *, char *, int, int, int *, int *)); ---- 265,269 ---- - static int chk_arithsub __P((const char *, int)); - -! static WORD_DESC *parameter_brace_expand_word __P((char *, int, int, int)); - static WORD_DESC *parameter_brace_expand_indir __P((char *, int, int, int *, int *)); - static WORD_DESC *parameter_brace_expand_rhs __P((char *, char *, int, int, int *, int *)); -*************** -*** 5196,5202 **** - NAME was found inside of a double-quoted expression. */ - static WORD_DESC * -! parameter_brace_expand_word (name, var_is_special, quoted) - char *name; -! int var_is_special, quoted; - { - WORD_DESC *ret; ---- 5197,5203 ---- - NAME was found inside of a double-quoted expression. */ - static WORD_DESC * -! parameter_brace_expand_word (name, var_is_special, quoted, pflags) - char *name; -! int var_is_special, quoted, pflags; - { - WORD_DESC *ret; -*************** -*** 5230,5234 **** - - ret = param_expand (tt, &sindex, quoted, (int *)NULL, (int *)NULL, -! (int *)NULL, (int *)NULL, 0); - free (tt); - } ---- 5231,5235 ---- - - ret = param_expand (tt, &sindex, quoted, (int *)NULL, (int *)NULL, -! (int *)NULL, (int *)NULL, pflags); - free (tt); - } -*************** -*** 5291,5295 **** - WORD_DESC *w; - -! w = parameter_brace_expand_word (name, var_is_special, quoted); - t = w->word; - /* Have to dequote here if necessary */ ---- 5292,5296 ---- - WORD_DESC *w; - -! w = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND); - t = w->word; - /* Have to dequote here if necessary */ -*************** -*** 5308,5312 **** - return (WORD_DESC *)NULL; - -! w = parameter_brace_expand_word (t, SPECIAL_VAR(t, 0), quoted); - free (t); - ---- 5309,5313 ---- - return (WORD_DESC *)NULL; - -! w = parameter_brace_expand_word (t, SPECIAL_VAR(t, 0), quoted, 0); - free (t); - -*************** -*** 6659,6663 **** - 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); - - if (tdesc) ---- 6660,6664 ---- - 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); - - if (tdesc) -*************** -*** 6990,6994 **** - list = list_rest_of_args (); - -! if (list == 0 && unbound_vars_is_error) - { - uerror[0] = '$'; ---- 6991,6995 ---- - list = list_rest_of_args (); - -! if (list == 0 && unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0) - { - uerror[0] = '$'; -*************** -*** 7052,7056 **** - list = list_rest_of_args (); - -! if (list == 0 && unbound_vars_is_error) - { - uerror[0] = '$'; ---- 7053,7057 ---- - list = list_rest_of_args (); - -! if (list == 0 && unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0) - { - uerror[0] = '$'; - - -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-014 b/testing/source/bash/bash-4.0-patches/bash40-014 deleted file mode 100644 index eeba336c..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-014 +++ /dev/null @@ -1,113 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-014 - -Bug-Reported-by: smallnow@gmail.com -Bug-Reference-ID: <49C460FE.40307@gmail.com> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00166.html - -Bug-Description: - -When the fc builtin is run in a command substitution from a shell with history -enabled, it does not correctly calculate the command on which to operate. - -Patch: - -*** ../bash-4.0-patched/builtins/fc.def 2009-01-04 14:32:22.000000000 -0500 ---- builtins/fc.def 2009-03-21 14:03:43.000000000 -0400 -*************** -*** 89,92 **** ---- 89,93 ---- - extern int literal_history; - extern int posixly_correct; -+ extern int subshell_environment, interactive_shell; - - extern int unlink __P((const char *)); -*************** -*** 173,177 **** - register char *sep; - int numbering, reverse, listing, execute; -! int histbeg, histend, last_hist, retval, opt; - FILE *stream; - REPL *rlist, *rl; ---- 174,178 ---- - register char *sep; - int numbering, reverse, listing, execute; -! int histbeg, histend, last_hist, retval, opt, rh; - FILE *stream; - REPL *rlist, *rl; -*************** -*** 276,279 **** ---- 277,282 ---- - fprintf (stderr, "%s\n", command); - fc_replhist (command); /* replace `fc -s' with command */ -+ /* Posix says that the re-executed commands should be entered into the -+ history. */ - return (parse_and_execute (command, "fc", SEVAL_NOHIST)); - } -*************** -*** 294,298 **** - so we check hist_last_line_added. */ - -! last_hist = i - remember_on_history - hist_last_line_added; - - if (list) ---- 297,306 ---- - so we check hist_last_line_added. */ - -! /* Even though command substitution through parse_and_execute turns off -! remember_on_history, command substitution in a shell when set -o history -! has been enabled (interactive or not) should use it in the last_hist -! calculation as if it were on. */ -! rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list); -! last_hist = i - rh - hist_last_line_added; - - if (list) -*************** -*** 457,461 **** - HIST_ENTRY **hlist; - { -! int sign, n, clen; - register int i, j; - register char *s; ---- 465,469 ---- - HIST_ENTRY **hlist; - { -! int sign, n, clen, rh; - register int i, j; - register char *s; -*************** -*** 473,477 **** - so we check hist_last_line_added. This needs to agree with the - calculation of last_hist in fc_builtin above. */ -! i -= remember_on_history + hist_last_line_added; - - /* No specification defaults to most recent command. */ ---- 481,490 ---- - so we check hist_last_line_added. This needs to agree with the - calculation of last_hist in fc_builtin above. */ -! /* Even though command substitution through parse_and_execute turns off -! remember_on_history, command substitution in a shell when set -o history -! has been enabled (interactive or not) should use it in the last_hist -! calculation as if it were on. */ -! rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list); -! i -= rh + hist_last_line_added; - - /* No specification defaults to most recent command. */ -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-015 b/testing/source/bash/bash-4.0-patches/bash40-015 deleted file mode 100644 index c3e8d334..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-015 +++ /dev/null @@ -1,84 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-015 - -Bug-Reported-by: Lubomir Rintel <lkundrak@v3.sk> -Bug-Reference-ID: <1237654931.32737.13.camel@localhost.localdomain> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00174.html - -Bug-Description: - -Deferring handling of signals which should cause the shell to terminate until -it is "safe" to run the handler functions does not work for some terminating -signals. - -Patch: - -*** ../bash-4.0-patched/sig.c 2009-01-04 14:32:41.000000000 -0500 ---- sig.c 2009-03-22 14:47:56.000000000 -0400 -*************** -*** 449,452 **** ---- 449,494 ---- - int sig; - { -+ /* If we get called twice with the same signal before handling it, -+ terminate right away. */ -+ if ( -+ #ifdef SIGHUP -+ sig != SIGHUP && -+ #endif -+ #ifdef SIGINT -+ sig != SIGINT && -+ #endif -+ #ifdef SIGDANGER -+ sig != SIGDANGER && -+ #endif -+ #ifdef SIGPIPE -+ sig != SIGPIPE && -+ #endif -+ #ifdef SIGALRM -+ sig != SIGALRM && -+ #endif -+ #ifdef SIGTERM -+ sig != SIGTERM && -+ #endif -+ #ifdef SIGXCPU -+ sig != SIGXCPU && -+ #endif -+ #ifdef SIGXFSZ -+ sig != SIGXFSZ && -+ #endif -+ #ifdef SIGVTALRM -+ sig != SIGVTALRM && -+ #endif -+ #ifdef SIGLOST -+ sig != SIGLOST && -+ #endif -+ #ifdef SIGUSR1 -+ sig != SIGUSR1 && -+ #endif -+ #ifdef SIGUSR2 -+ sig != SIGUSR2 && -+ #endif -+ sig == terminating_signal) -+ terminate_immediately = 1; -+ - terminating_signal = sig; - -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-016 b/testing/source/bash/bash-4.0-patches/bash40-016 deleted file mode 100644 index ace2e1e5..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-016 +++ /dev/null @@ -1,104 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-016 - -Bug-Reported-by: Brian J. Murrell" <brian@interlinx.bc.ca> -Bug-Reference-ID: <1237564627.7666.12.camel@pc.interlinx.bc.ca> -Bug-Reference-URL:http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00160.html - -Bug-Description: - -There are several problems with the handling of $LINENO in an ERR trap. - -Patch: - -*** ../bash-4.0-patched/trap.c 2009-01-16 17:07:53.000000000 -0500 ---- trap.c 2009-03-20 21:37:00.000000000 -0400 -*************** -*** 756,760 **** - - flags = SEVAL_NONINT|SEVAL_NOHIST; -! if (sig != DEBUG_TRAP && sig != RETURN_TRAP) - flags |= SEVAL_RESETLINE; - if (function_code == 0) ---- 756,760 ---- - - flags = SEVAL_NONINT|SEVAL_NOHIST; -! if (sig != DEBUG_TRAP && sig != RETURN_TRAP && sig != ERROR_TRAP) - flags |= SEVAL_RESETLINE; - if (function_code == 0) -*** ../bash-4.0-patched/execute_cmd.c 2009-02-13 16:41:41.000000000 -0500 ---- execute_cmd.c 2009-03-21 14:16:11.000000000 -0400 -*************** -*** 569,572 **** ---- 569,573 ---- - /* Fork a subshell, turn off the subshell bit, turn off job - control and call execute_command () on the command again. */ -+ line_number_for_err_trap = line_number; - paren_pid = make_child (savestring (make_command_string (command)), - asynchronous); -*************** -*** 611,615 **** ---- 612,619 ---- - { - last_command_exit_value = exec_result; -+ save_line_number = line_number; -+ line_number = line_number_for_err_trap; - run_error_trap (); -+ line_number = save_line_number; - } - -*************** -*** 767,771 **** ---- 771,777 ---- - { - last_command_exit_value = exec_result; -+ line_number = line_number_for_err_trap; - run_error_trap (); -+ line_number = save_line_number; - } - -*************** -*** 2106,2109 **** ---- 2112,2116 ---- - COMMAND *tc, *second; - int ignore_return, exec_result, was_error_trap, invert; -+ volatile int save_line_number; - - ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0; -*************** -*** 2175,2178 **** ---- 2182,2186 ---- - ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0; - -+ line_number_for_err_trap = line_number; - exec_result = execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close); - -*************** -*** 2180,2184 **** ---- 2188,2195 ---- - { - last_command_exit_value = exec_result; -+ save_line_number = line_number; -+ line_number = line_number_for_err_trap; - run_error_trap (); -+ line_number = save_line_number; - } - -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-017 b/testing/source/bash/bash-4.0-patches/bash40-017 deleted file mode 100644 index ff42d778..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-017 +++ /dev/null @@ -1,47 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-017 - -Bug-Reported-by: Lubomir Rintel <lkundrak@v3.sk> -Bug-Reference-ID: <1237654931.32737.13.camel@localhost.localdomain> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00174.html - -Bug-Description: - -Adding a null line to a here-document (e.g., by hitting EOF) causes the -shell to dump core attempting to dereference the NULL pointer. - -Patch: - -*** ../bash-4.0-patched/parse.y 2009-03-08 21:24:47.000000000 -0400 ---- parse.y 2009-03-21 14:38:42.000000000 -0400 -*************** -*** 1880,1884 **** - ret = read_a_line (remove_quoted_newline); - #if defined (HISTORY) -! if (remember_on_history && (parser_state & PST_HEREDOC)) - { - /* To make adding the the here-document body right, we need to rely ---- 1880,1884 ---- - ret = read_a_line (remove_quoted_newline); - #if defined (HISTORY) -! if (ret && remember_on_history && (parser_state & PST_HEREDOC)) - { - /* To make adding the the here-document body right, we need to rely -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-018 b/testing/source/bash/bash-4.0-patches/bash40-018 deleted file mode 100644 index 35f33e5f..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-018 +++ /dev/null @@ -1,78 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-018 - -Bug-Reported-by: Dan Price <dp@eng.sun.com> -Bug-Reference-ID: <20090324171502.GA20582@eng.sun.com> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00184.html - -Bug-Description: - -A missing include file results in an empty function definition and a no-op -when checking whether or not the window size has changed. - -Patch: - -*** ../bash-4.0-patched/lib/sh/winsize.c 2008-08-12 13:53:51.000000000 -0400 ---- lib/sh/winsize.c 2009-04-06 10:44:20.000000000 -0400 -*************** -*** 31,44 **** - #include <sys/ioctl.h> - -! #if !defined (STRUCT_WINSIZE_IN_SYS_IOCTL) -! /* For struct winsize on SCO */ -! /* sys/ptem.h has winsize but needs mblk_t from sys/stream.h */ -! # if defined (HAVE_SYS_PTEM_H) && defined (TIOCGWINSZ) && defined (SIGWINCH) -! # if defined (HAVE_SYS_STREAM_H) -! # include <sys/stream.h> -! # endif - # include <sys/ptem.h> -! # endif /* HAVE_SYS_PTEM_H && TIOCGWINSZ && SIGWINCH */ -! #endif /* !STRUCT_WINSIZE_IN_SYS_IOCTL */ - - #include <stdio.h> ---- 31,57 ---- - #include <sys/ioctl.h> - -! /* Try to find the definitions of `struct winsize' and TIOGCWINSZ */ -! -! #if defined (GWINSZ_IN_SYS_IOCTL) && !defined (TIOCGWINSZ) -! # include <sys/ioctl.h> -! #endif /* GWINSZ_IN_SYS_IOCTL && !TIOCGWINSZ */ -! -! #if defined (STRUCT_WINSIZE_IN_TERMIOS) && !defined (STRUCT_WINSIZE_IN_SYS_IOCTL) -! # include <termios.h> -! #endif /* STRUCT_WINSIZE_IN_TERMIOS && !STRUCT_WINSIZE_IN_SYS_IOCTL */ -! -! /* Not in either of the standard places, look around. */ -! #if !defined (STRUCT_WINSIZE_IN_TERMIOS) && !defined (STRUCT_WINSIZE_IN_SYS_IOCTL) -! # if defined (HAVE_SYS_STREAM_H) -! # include <sys/stream.h> -! # endif /* HAVE_SYS_STREAM_H */ -! # if defined (HAVE_SYS_PTEM_H) /* SVR4.2, at least, has it here */ - # include <sys/ptem.h> -! # define _IO_PTEM_H /* work around SVR4.2 1.1.4 bug */ -! # endif /* HAVE_SYS_PTEM_H */ -! # if defined (HAVE_SYS_PTE_H) /* ??? */ -! # include <sys/pte.h> -! # endif /* HAVE_SYS_PTE_H */ -! #endif /* !STRUCT_WINSIZE_IN_TERMIOS && !STRUCT_WINSIZE_IN_SYS_IOCTL */ - - #include <stdio.h> -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-019 b/testing/source/bash/bash-4.0-patches/bash40-019 deleted file mode 100644 index 30efd680..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-019 +++ /dev/null @@ -1,125 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-019 - -Bug-Reported-by: Oleksiy Melnyk <lex@upc.ua> -Bug-Reference-ID: <20090224142233.D2FEFC004@floyd.upc.ua> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00200.html - -Bug-Description: - -Using an external command as part of the DEBUG trap when job control is -enabled causes pipelines to misbehave. The problem has to do with process -groups assigned to the pipeline and terminal. - -Patch: - -*** ../bash-4.0-patched/jobs.c 2009-01-29 17:09:49.000000000 -0500 ---- jobs.c 2009-04-17 21:08:20.000000000 -0400 -*************** -*** 443,447 **** - the_pipeline = saved_pipeline; - already_making_children = saved_already_making_children; -! if (discard) - discard_pipeline (old_pipeline); - } ---- 443,447 ---- - the_pipeline = saved_pipeline; - already_making_children = saved_already_making_children; -! if (discard && old_pipeline) - discard_pipeline (old_pipeline); - } -*************** -*** 4203,4205 **** ---- 4204,4225 ---- - } - -+ void -+ save_pgrp_pipe (p, clear) -+ int *p; -+ int clear; -+ { -+ p[0] = pgrp_pipe[0]; -+ p[1] = pgrp_pipe[1]; -+ if (clear) -+ pgrp_pipe[0] = pgrp_pipe[1] = -1; -+ } -+ -+ void -+ restore_pgrp_pipe (p) -+ int *p; -+ { -+ pgrp_pipe[0] = p[0]; -+ pgrp_pipe[1] = p[1]; -+ } -+ - #endif /* PGRP_PIPE */ -*** ../bash-4.0-patched/jobs.h 2009-01-04 14:32:29.000000000 -0500 ---- jobs.h 2009-04-17 15:07:51.000000000 -0400 -*************** -*** 236,239 **** ---- 236,241 ---- - - extern void close_pgrp_pipe __P((void)); -+ extern void save_pgrp_pipe __P((int *, int)); -+ extern void restore_pgrp_pipe __P((int *)); - - #if defined (JOB_CONTROL) -*** ../bash-4.0-patched/trap.c 2009-01-16 17:07:53.000000000 -0500 ---- trap.c 2009-04-17 22:22:36.000000000 -0400 -*************** -*** 799,802 **** ---- 799,804 ---- - { - int trap_exit_value; -+ pid_t save_pgrp; -+ int save_pipe[2]; - - /* XXX - question: should the DEBUG trap inherit the RETURN trap? */ -*************** -*** 804,808 **** ---- 806,832 ---- - if ((sigmodes[DEBUG_TRAP] & SIG_TRAPPED) && ((sigmodes[DEBUG_TRAP] & SIG_IGNORED) == 0) && ((sigmodes[DEBUG_TRAP] & SIG_INPROGRESS) == 0)) - { -+ #if defined (JOB_CONTROL) -+ save_pgrp = pipeline_pgrp; -+ pipeline_pgrp = 0; -+ save_pipeline (1); -+ # if defined (PGRP_PIPE) -+ save_pgrp_pipe (save_pipe, 1); -+ # endif -+ stop_making_children (); -+ #endif -+ - trap_exit_value = _run_trap_internal (DEBUG_TRAP, "debug trap"); -+ -+ #if defined (JOB_CONTROL) -+ pipeline_pgrp = save_pgrp; -+ restore_pipeline (1); -+ # if defined (PGRP_PIPE) -+ close_pgrp_pipe (); -+ restore_pgrp_pipe (save_pipe); -+ # endif -+ if (pipeline_pgrp > 0) -+ give_terminal_to (pipeline_pgrp, 1); -+ notify_and_cleanup (); -+ #endif - - #if defined (DEBUGGER) -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-020 b/testing/source/bash/bash-4.0-patches/bash40-020 deleted file mode 100644 index 885f15ef..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-020 +++ /dev/null @@ -1,83 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-020 - -Bug-Reported-by: Nicolai Lissner <nlissne@linux01.org> -Bug-Reference-ID: <20090412020510.GA29658@lilith> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-04/msg00104.html - -Bug-Description: - -If a SIGWINCH arrives while bash is performing redisplay, multi-line prompts -are displayed incorrectly due to the display code being called recursively. - -Patch: - -*** ../bash-4.0-patched/lib/readline/readline.h 2009-01-04 14:32:33.000000000 -0500 ---- lib/readline/readline.h 2009-04-13 08:47:00.000000000 -0400 -*************** -*** 815,820 **** - #define RL_STATE_MULTIKEY 0x200000 /* reading multiple-key command */ - #define RL_STATE_VICMDONCE 0x400000 /* entered vi command mode at least once */ - -! #define RL_STATE_DONE 0x800000 /* done; accepted line */ - - #define RL_SETSTATE(x) (rl_readline_state |= (x)) ---- 815,821 ---- - #define RL_STATE_MULTIKEY 0x200000 /* reading multiple-key command */ - #define RL_STATE_VICMDONCE 0x400000 /* entered vi command mode at least once */ -+ #define RL_STATE_REDISPLAYING 0x800000 /* updating terminal display */ - -! #define RL_STATE_DONE 0x1000000 /* done; accepted line */ - - #define RL_SETSTATE(x) (rl_readline_state |= (x)) -*** ../bash-4.0-patched/lib/readline/display.c 2009-01-04 14:32:32.000000000 -0500 ---- lib/readline/display.c 2009-04-13 08:29:54.000000000 -0400 -*************** -*** 513,516 **** ---- 513,517 ---- - data structures. */ - _rl_block_sigint (); -+ RL_SETSTATE (RL_STATE_REDISPLAYING); - - if (!rl_display_prompt) -*************** -*** 1237,1240 **** ---- 1238,1242 ---- - } - -+ RL_UNSETSTATE (RL_STATE_REDISPLAYING); - _rl_release_sigint (); - } -*** ../bash-4.0-patched/lib/readline/terminal.c 2009-01-04 14:32:34.000000000 -0500 ---- lib/readline/terminal.c 2009-04-13 08:43:00.000000000 -0400 -*************** -*** 356,360 **** - if (CUSTOM_REDISPLAY_FUNC ()) - rl_forced_update_display (); -! else - _rl_redisplay_after_sigwinch (); - } ---- 356,360 ---- - if (CUSTOM_REDISPLAY_FUNC ()) - rl_forced_update_display (); -! else if (RL_ISSTATE(RL_STATE_REDISPLAYING) == 0) - _rl_redisplay_after_sigwinch (); - } -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-021 b/testing/source/bash/bash-4.0-patches/bash40-021 deleted file mode 100644 index cf6ee1f5..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-021 +++ /dev/null @@ -1,48 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-021 - -Bug-Reported-by: Matt Zyzik <matt.zyzik@nyu.edu> -Bug-Reference-ID: <20090319015542.696F62B8E8@ice.filescope.com> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00149.html - -Bug-Description: - -When not in a locale supporting multibyte characters, readline will occasionally -not erase characters between the cursor position and the end of the line -when killing text backwards. - -Patch: - -*** ../bash-4.0-patched/lib/readline/display.c 2009-01-04 14:32:32.000000000 -0500 ---- lib/readline/display.c 2009-04-14 14:00:18.000000000 -0400 -*************** -*** 1775,1779 **** - adjust col_lendiff based on the difference between _rl_last_c_pos - and _rl_screenwidth */ -! if (col_lendiff && (_rl_last_c_pos < _rl_screenwidth)) - #endif - { ---- 1775,1779 ---- - adjust col_lendiff based on the difference between _rl_last_c_pos - and _rl_screenwidth */ -! if (col_lendiff && ((MB_CUR_MAX == 1 || rl_byte_oriented) || (_rl_last_c_pos < _rl_screenwidth))) - #endif - { -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-022 b/testing/source/bash/bash-4.0-patches/bash40-022 deleted file mode 100644 index 5b685380..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-022 +++ /dev/null @@ -1,48 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-022 - -Bug-Reported-by: Bernd Eggink <monoped@sudrala.de> -Bug-Reference-ID: <49E65407.5010206@sudrala.de> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-04/msg00118.html - -Bug-Description: - -When parsing case statements in command substitutions, the shell did not -note that a newline is a shell metacharacter and can legally be followed -by a reserved word (e.g., `esac'). - -Patch: - -*** ../bash-4.0-patched/parse.y 2009-03-08 21:24:47.000000000 -0400 ---- parse.y 2009-04-15 22:27:56.000000000 -0400 -*************** -*** 3355,3359 **** - - /* Meta-characters that can introduce a reserved word. Not perfect yet. */ -! if MBTEST((tflags & LEX_RESWDOK) == 0 && (tflags & LEX_CKCASE) && (tflags & LEX_INCOMMENT) == 0 && shellmeta(ch)) - { - /* Add this character. */ ---- 3375,3379 ---- - - /* Meta-characters that can introduce a reserved word. Not perfect yet. */ -! if MBTEST((tflags & LEX_RESWDOK) == 0 && (tflags & LEX_CKCASE) && (tflags & LEX_INCOMMENT) == 0 && (shellmeta(ch) || ch == '\n')) - { - /* Add this character. */ -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-023 b/testing/source/bash/bash-4.0-patches/bash40-023 deleted file mode 100644 index d2376c7d..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-023 +++ /dev/null @@ -1,62 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-023 - -Bug-Reported-by: Andreas Schwab <schwab@linux-m68k.org> -Bug-Reference-ID: <m21vrhhx08.fsf@igel.home> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-04/msg00160.html - -Bug-Description: - -If the prompt length exactly matches the screen width, and the prompt ends -with invisible characters, readline positions the cursor incorrectly. - -Patch: - -*** ../bash-4.0-patched/lib/readline/display.c 2009-01-04 14:32:32.000000000 -0500 ---- lib/readline/display.c 2009-04-25 21:42:18.000000000 -0400 -*************** -*** 1895,1898 **** ---- 1897,1904 ---- - woff = WRAP_OFFSET (_rl_last_v_pos, wrap_offset); - cpos = _rl_last_c_pos; -+ -+ if (cpos == 0 && cpos == new) -+ return; -+ - #if defined (HANDLE_MULTIBYTE) - /* If we have multibyte characters, NEW is indexed by the buffer point in -*************** -*** 1908,1914 **** - desired display position. */ - if ((new > prompt_last_invisible) || /* XXX - don't use woff here */ -! (prompt_physical_chars > _rl_screenwidth && - _rl_last_v_pos == prompt_last_screen_line && -! wrap_offset >= woff && - new > (prompt_last_invisible-(_rl_screenwidth*_rl_last_v_pos)-wrap_offset))) - /* XXX last comparison might need to be >= */ ---- 1914,1920 ---- - desired display position. */ - if ((new > prompt_last_invisible) || /* XXX - don't use woff here */ -! (prompt_physical_chars >= _rl_screenwidth && - _rl_last_v_pos == prompt_last_screen_line && -! wrap_offset >= woff && dpos >= woff && - new > (prompt_last_invisible-(_rl_screenwidth*_rl_last_v_pos)-wrap_offset))) - /* XXX last comparison might need to be >= */ -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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/testing/source/bash/bash-4.0-patches/bash40-024 b/testing/source/bash/bash-4.0-patches/bash40-024 deleted file mode 100644 index ac2058ae..00000000 --- a/testing/source/bash/bash-4.0-patches/bash40-024 +++ /dev/null @@ -1,112 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 4.0 -Patch-ID: bash40-024 - -Bug-Reported-by: Matt Zyzik <matt.zyzik@nyu.edu> -Bug-Reference-ID: <20090405205428.4FDEA1C7175@ice.filescope.com> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-04/msg00021.html - -Bug-Description: - -When using the ** globbing operator, bash will incorrectly add an extra -directory name when the preceding directory name ends with `*' or an empty -string when there is no preceding directory name. - -Patch: - -*** ../bash-4.0-patched/lib/glob/glob.c 2009-01-04 14:32:30.000000000 -0500 ---- lib/glob/glob.c 2009-04-28 10:22:29.000000000 -0400 -*************** -*** 357,361 **** - if (ep) - *ep = 0; -! if (r) - free (r); - return (struct globval *)0; ---- 357,361 ---- - if (ep) - *ep = 0; -! if (r && r != &glob_error_return) - free (r); - return (struct globval *)0; -*************** -*** 666,671 **** - } - -! /* compat: if GX_ALLDIRS, add the passed directory also */ -! if (add_current) - { - sdlen = strlen (dir); ---- 666,672 ---- - } - -! /* compat: if GX_ALLDIRS, add the passed directory also, but don't add an -! empty directory name. */ -! if (add_current && (flags & GX_NULLDIR) == 0) - { - sdlen = strlen (dir); -*************** -*** 679,686 **** - nextlink->next = lastlink; - lastlink = nextlink; -! if (flags & GX_NULLDIR) -! nextname[0] = '\0'; -! else -! bcopy (dir, nextname, sdlen + 1); - ++count; - } ---- 680,684 ---- - nextlink->next = lastlink; - lastlink = nextlink; -! bcopy (dir, nextname, sdlen + 1); - ++count; - } -*************** -*** 943,947 **** - register unsigned int l; - -! array = glob_dir_to_array (directories[i], temp_results, flags); - l = 0; - while (array[l] != NULL) ---- 941,950 ---- - register unsigned int l; - -! /* If we're expanding **, we don't need to glue the directory -! name to the results; we've already done it in glob_vector */ -! if ((dflags & GX_ALLDIRS) && filename[0] == '*' && filename[1] == '*' && filename[2] == '\0') -! array = temp_results; -! else -! array = glob_dir_to_array (directories[i], temp_results, flags); - l = 0; - while (array[l] != NULL) -*************** -*** 960,964 **** - - /* Note that the elements of ARRAY are not freed. */ -! free ((char *) array); - } - } ---- 963,968 ---- - - /* Note that the elements of ARRAY are not freed. */ -! if (array != temp_results) -! free ((char *) array); - } - } -*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 ---- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 -*************** -*** 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_ */ |