SOURCES: bash32-001 (NEW), bash32-002 (NEW), bash32-003 (NEW) - of...

glen glen at pld-linux.org
Wed Nov 1 23:16:48 CET 2006


Author: glen                         Date: Wed Nov  1 22:16:48 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- official patches

---- Files affected:
SOURCES:
   bash32-001 (NONE -> 1.1)  (NEW), bash32-002 (NONE -> 1.1)  (NEW), bash32-003 (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/bash32-001
diff -u /dev/null SOURCES/bash32-001:1.1
--- /dev/null	Wed Nov  1 23:16:48 2006
+++ SOURCES/bash32-001	Wed Nov  1 23:16:43 2006
@@ -0,0 +1,47 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-001
+
+Bug-Reported-by:	Greg Schafer <gschafer at zip.com.au>
+Bug-Reference-ID:	<20061012084940.GA15768 at tigers.local>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00046.html
+
+Bug-Description:
+
+When using historical ``-style command substitution, bash incorrectly attempts
+to interpret shell comments while scanning for the closing backquote.
+
+Patch:
+
+*** ../bash-3.2/parse.y	Tue Sep 19 16:37:21 2006
+--- parse.y	Thu Oct 12 10:30:57 2006
+***************
+*** 2736,2740 ****
+    count = 1;
+    pass_next_character = backq_backslash = was_dollar = in_comment = 0;
+!   check_comment = (flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0;
+  
+    /* RFLAGS is the set of flags we want to pass to recursive calls. */
+--- 2736,2740 ----
+    count = 1;
+    pass_next_character = backq_backslash = was_dollar = in_comment = 0;
+!   check_comment = (flags & P_COMMAND) && qc != '`' && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0;
+  
+    /* RFLAGS is the set of flags we want to pass to recursive calls. */
+*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006
+--- patchlevel.h	Mon Oct 16 14:22:54 2006
+***************
+*** 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_ */

================================================================
Index: SOURCES/bash32-002
diff -u /dev/null SOURCES/bash32-002:1.1
--- /dev/null	Wed Nov  1 23:16:48 2006
+++ SOURCES/bash32-002	Wed Nov  1 23:16:43 2006
@@ -0,0 +1,48 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-002
+
+Bug-Reported-by:	Jim Gifford <jim at jg555.com>
+Bug-Reference-ID:	<12j2pc3aq35mb04 at corp.supernews.com>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00082.html
+
+Bug-Description:
+
+An incorrect encoding specification in the Content-Type header causes msgfmt
+to fail, which causes `make install' to fail.
+
+Patch:
+
+*** ../bash-3.2/po/ru.po        Tue Jan 10 17:51:03 2006
+--- po/ru.po    Mon Oct 16 15:13:23 2006
+***************
+*** 13,17 ****
+  "Language-Team: Russian <ru at li.org>\n"
+  "MIME-Version: 1.0\n"
+! "Content-Type: text/plain; charset=UTF-8\n"
+  "Content-Transfer-Encoding: 8bit\n"
+  "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+--- 13,17 ----
+  "Language-Team: Russian <ru at li.org>\n"
+  "MIME-Version: 1.0\n"
+! "Content-Type: text/plain; charset=KOI8-R\n"
+  "Content-Transfer-Encoding: 8bit\n"
+  "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006
+--- patchlevel.h	Mon Oct 16 14:22:54 2006
+***************
+*** 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_ */

================================================================
Index: SOURCES/bash32-003
diff -u /dev/null SOURCES/bash32-003:1.1
--- /dev/null	Wed Nov  1 23:16:48 2006
+++ SOURCES/bash32-003	Wed Nov  1 23:16:43 2006
@@ -0,0 +1,147 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-003
+
+Bug-Reported-by:	John Gatewood Ham <zappaman at buraphalinux.org>
+Bug-Reference-ID:	<Pine.LNX.4.64.0610121334140.15558 at www.buraphalinux.org>
+Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00045.html
+
+Bug-Description:
+
+When using the conditional command's `=~' operator to match regular
+expressions, the parser did not skip over shell metacharacters in the
+regular expression, leading to syntax errors.
+
+Patch:
+
+*** ../bash-3.2-patched/parse.y	Tue Oct 17 11:45:20 2006
+--- parse.y	Sat Oct 14 14:56:16 2006
+***************
+*** 1029,1034 ****
+--- 1029,1035 ----
+  #define PST_CMDTOKEN	0x1000		/* command token OK - unused */
+  #define PST_COMPASSIGN	0x2000		/* parsing x=(...) compound assignment */
+  #define PST_ASSIGNOK	0x4000		/* assignment statement ok in this context */
++ #define PST_REGEXP	0x8000		/* parsing an ERE/BRE as a single word */
+  
+  /* Initial size to allocate for tokens, and the
+     amount to grow them by. */
+***************
+*** 2591,2596 ****
+--- 2592,2600 ----
+        return (character);
+      }
+  
++   if (parser_state & PST_REGEXP)
++     goto tokword;
++ 
+    /* Shell meta-characters. */
+    if MBTEST(shellmeta (character) && ((parser_state & PST_DBLPAREN) == 0))
+      {
+***************
+*** 2698,2703 ****
+--- 2702,2708 ----
+    if MBTEST(character == '-' && (last_read_token == LESS_AND || last_read_token == GREATER_AND))
+      return (character);
+  
++ tokword:
+    /* Okay, if we got this far, we have to read a word.  Read one,
+       and then check it against the known ones. */
+    result = read_token_word (character);
+***************
+*** 3202,3209 ****
+        if (tok == WORD && test_binop (yylval.word->word))
+  	op = yylval.word;
+  #if defined (COND_REGEXP)
+!       else if (tok == WORD && STREQ (yylval.word->word,"=~"))
+! 	op = yylval.word;
+  #endif
+        else if (tok == '<' || tok == '>')
+  	op = make_word_from_token (tok);  /* ( */
+--- 3207,3217 ----
+        if (tok == WORD && test_binop (yylval.word->word))
+  	op = yylval.word;
+  #if defined (COND_REGEXP)
+!       else if (tok == WORD && STREQ (yylval.word->word, "=~"))
+! 	{
+! 	  op = yylval.word;
+! 	  parser_state |= PST_REGEXP;
+! 	}
+  #endif
+        else if (tok == '<' || tok == '>')
+  	op = make_word_from_token (tok);  /* ( */
+***************
+*** 3234,3239 ****
+--- 3242,3248 ----
+  
+        /* rhs */
+        tok = read_token (READ);
++       parser_state &= ~PST_REGEXP;
+        if (tok == WORD)
+  	{
+  	  tright = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL);
+***************
+*** 3419,3427 ****
+  	  goto next_character;
+  	}
+  
+  #ifdef EXTENDED_GLOB
+        /* Parse a ksh-style extended pattern matching specification. */
+!       if (extended_glob && PATTERN_CHAR (character))
+  	{
+  	  peek_char = shell_getc (1);
+  	  if MBTEST(peek_char == '(')		/* ) */
+--- 3428,3461 ----
+  	  goto next_character;
+  	}
+  
++ #ifdef COND_REGEXP
++       /* When parsing a regexp as a single word inside a conditional command,
++ 	 we need to special-case characters special to both the shell and
++ 	 regular expressions.  Right now, that is only '(' and '|'. */ /*)*/
++       if MBTEST((parser_state & PST_REGEXP) && (character == '(' || character == '|'))		/*)*/
++         {
++           if (character == '|')
++             goto got_character;
++ 
++ 	  push_delimiter (dstack, character);
++ 	  ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0);
++ 	  pop_delimiter (dstack);
++ 	  if (ttok == &matched_pair_error)
++ 	    return -1;		/* Bail immediately. */
++ 	  RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2,
++ 				  token_buffer_size, TOKEN_DEFAULT_GROW_SIZE);
++ 	  token[token_index++] = character;
++ 	  strcpy (token + token_index, ttok);
++ 	  token_index += ttoklen;
++ 	  FREE (ttok);
++ 	  dollar_present = all_digit_token = 0;
++ 	  goto next_character;
++         }
++ #endif /* COND_REGEXP */
++ 
+  #ifdef EXTENDED_GLOB
+        /* Parse a ksh-style extended pattern matching specification. */
+!       if MBTEST(extended_glob && PATTERN_CHAR (character))
+  	{
+  	  peek_char = shell_getc (1);
+  	  if MBTEST(peek_char == '(')		/* ) */
+
+*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006
+--- patchlevel.h	Mon Oct 16 14:22:54 2006
+***************
+*** 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_ */
+
================================================================


More information about the pld-cvs-commit mailing list