rpms/bash/devel bash40-001, NONE, 1.1 bash40-002, NONE, 1.1 bash40-003, NONE, 1.1 bash40-004, NONE, 1.1 bash40-005, NONE, 1.1 bash40-006, NONE, 1.1 bash40-007, NONE, 1.1 bash40-008, NONE, 1.1 bash40-009, NONE, 1.1 bash40-010, NONE, 1.1 bash.spec, 1.176, 1.177

Roman Rakus rrakus at fedoraproject.org
Wed Mar 11 16:59:52 UTC 2009


Author: rrakus

Update of /cvs/extras/rpms/bash/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv30907

Modified Files:
	bash.spec 
Added Files:
	bash40-001 bash40-002 bash40-003 bash40-004 bash40-005 
	bash40-006 bash40-007 bash40-008 bash40-009 bash40-010 
Log Message:
Patch level 10


--- NEW FILE bash40-001 ---
			     BASH PATCH REPORT
			     =================

Bash-Release: 4.0
Patch-ID: bash40-001

Bug-Reported-by:	Mike Frysinger <vapier at gentoo.org>
Bug-Reference-ID:	<200902211821.42188.vapier at 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_ */


--- NEW FILE bash40-002 ---
			     BASH PATCH REPORT
			     =================

Bash-Release: 4.0
Patch-ID: bash40-002

Bug-Reported-by:	phil at Arcturus.universe
Bug-Reference-ID:	<20090221143709.13878.qmail at 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_ */


--- NEW FILE bash40-003 ---
			     BASH PATCH REPORT
			     =================

Bash-Release: 4.0
Patch-ID: bash40-003

Bug-Reported-by:	Bernd Eggink <monoped at sudrala.de>
Bug-Reference-ID:	<49A323F5.60503 at 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_ */


--- NEW FILE bash40-004 ---
			     BASH PATCH REPORT
			     =================

Bash-Release: 4.0
Patch-ID: bash40-004

Bug-Reported-by:	Mike Frysinger <vapier at gentoo.org>
Bug-Reference-ID:	<200902231720.30519.vapier at 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_ */


--- NEW FILE bash40-005 ---
			     BASH PATCH REPORT
			     =================

Bash-Release: 4.0
Patch-ID: bash40-005

Bug-Reported-by:	Pierre Gaston <pierre.gaston at gmail.com>
Bug-Reference-ID:	<c440c9800902242338n69f594a4nd66b8748def9cf18 at 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_ */



--- NEW FILE bash40-006 ---
			     BASH PATCH REPORT
			     =================

Bash-Release: 4.0
Patch-ID: bash40-006

Bug-Reported-by:	Evgeniy Zhemchugov <jini.zh at gmail.com>
Bug-Reference-ID:	<e7bc8dd30902241016m8bd543ej775717d007df975b at 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_ */



--- NEW FILE bash40-007 ---
			     BASH PATCH REPORT
			     =================

Bash-Release: 4.0
Patch-ID: bash40-007

Bug-Reported-by:	AnMaster <anmaster at tele2.se>
Bug-Reference-ID:	<49A41C18.80807 at 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_ */


--- NEW FILE bash40-008 ---
			     BASH PATCH REPORT
			     =================

Bash-Release: 4.0
Patch-ID: bash40-008

Bug-Reported-by:	Mike Frysinger <vapier at gentoo.org>
Bug-Reference-ID:	<200902261030.54062.vapier at 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_ */


--- NEW FILE bash40-009 ---
			     BASH PATCH REPORT
			     =================

Bash-Release: 4.0
Patch-ID: bash40-009

Bug-Reported-by:	"Chris F.A. Johnson" <cfajohnson at gmail.com>
Bug-Reference-ID:	<4d6b7$49a88cec$cef88ba3$16813 at 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_ */


--- NEW FILE bash40-010 ---
			     BASH PATCH REPORT
			     =================

Bash-Release: 4.0
Patch-ID: bash40-010

Bug-Reported-by:	Mike Frysinger <vapier at gentoo.org>
Bug-Reference-ID:	<200903030122.56206.vapier at 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_ */


Index: bash.spec
===================================================================
RCS file: /cvs/extras/rpms/bash/devel/bash.spec,v
retrieving revision 1.176
retrieving revision 1.177
diff -u -r1.176 -r1.177
--- bash.spec	25 Feb 2009 14:39:36 -0000	1.176
+++ bash.spec	11 Mar 2009 16:59:20 -0000	1.177
@@ -3,7 +3,7 @@
 Version: 4.0
 Name: bash
 Summary: The GNU Bourne Again shell version %{version}
-Release: 2%{?dist}
+Release: 3%{?dist}
 Group: System Environment/Shells
 License: GPLv2+
 Url: http://www.gnu.org/software/bash
@@ -17,6 +17,17 @@
 Source3: dot-bash_logout
 
 # Official upstream patches
+Patch001: bash40-001
+Patch002: bash40-002
+Patch003: bash40-003
+Patch004: bash40-004
+Patch005: bash40-005
+Patch006: bash40-006
+Patch007: bash40-007
+Patch008: bash40-008
+Patch009: bash40-009
+Patch010: bash40-010
+
 # not any :)
 
 # Other patches
@@ -38,7 +49,6 @@
 Patch116: bash-requires.patch
 Patch117: bash-setlocale.patch
 Patch118: bash-tty-tests.patch
-Patch119: pcomplete-save-parser-state.patch
 #Patch119: bash-ulimit-m.patch
 #Patch120: bash-4.0-no_debug_output.patch
 #Patch121: bash-4.0-shell_pipelines_handling.patch
@@ -64,6 +74,17 @@
 %setup -q -n bash-%{version}
 
 # Official upstream patches
+%patch001 -p0 -b .001
+%patch002 -p0 -b .002
+%patch003 -p0 -b .003
+%patch004 -p0 -b .004
+%patch005 -p0 -b .005
+%patch006 -p0 -b .006
+%patch007 -p0 -b .007
+%patch008 -p0 -b .008
+%patch009 -p0 -b .009
+%patch010 -p0 -b .010
+
 # Other patches
 %patch101 -p1 -b .security
 %patch102 -p1 -b .paths
@@ -83,7 +104,6 @@
 %patch116 -p1 -b .requires
 %patch117 -p1 -b .setlocale
 %patch118 -p1 -b .tty_tests
-%patch119 -p1 -b .parser-state
 #%patch119 -p1 -b .ulimit-m
 #%patch120 -p1 -b .no_debug_output
 #%patch121 -p1 -b .pipelines_handling
@@ -245,6 +265,9 @@
 #%doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
 
 %changelog
+* Wed Mar 11 2009 Roman Rakus <rrakus at redhat.com> - 4.0-3
+- Official upstream patch level 10
+
 * Wed Feb 25 2009 Roman Rakus <rrakus at redhat.com> - 4.0-2
 - Save parser state in pcomplete.
   Resolves: #487257




More information about the fedora-extras-commits mailing list