97 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 			     BASH PATCH REPORT
 | |
| 			     =================
 | |
| 
 | |
| Bash-Release: 3.2
 | |
| Patch-ID: bash32-004
 | |
| 
 | |
| Bug-Reported-by:	Stuart Shelton <srcshelton@gmail.com>
 | |
| Bug-Reference-ID:	<619141e40610261203y6cda5aa6i23cb24c7aeba996e@mail.gmail.com>
 | |
| Bug-Reference-URL:	
 | |
| 
 | |
| Bug-Description:
 | |
| 
 | |
| A bug in the parameter pattern substitution implementation treated a pattern
 | |
| whose first character was `/' (after expansion) as specifying global
 | |
| replacement.
 | |
| 
 | |
| Patch:
 | |
| 
 | |
| *** ../bash-3.2/subst.c	Tue Sep 19 08:35:09 2006
 | |
| --- subst.c	Thu Oct 26 09:17:50 2006
 | |
| ***************
 | |
| *** 5707,5712 ****
 | |
| --- 5707,5717 ----
 | |
|     vtype &= ~VT_STARSUB;
 | |
|   
 | |
|     mflags = 0;
 | |
| +   if (patsub && *patsub == '/')
 | |
| +     {
 | |
| +       mflags |= MATCH_GLOBREP;
 | |
| +       patsub++;
 | |
| +     }
 | |
|   
 | |
|     /* Malloc this because expand_string_if_necessary or one of the expansion
 | |
|        functions in its call chain may free it on a substitution error. */
 | |
| ***************
 | |
| *** 5741,5753 ****
 | |
|       }
 | |
|   
 | |
|     /* ksh93 doesn't allow the match specifier to be a part of the expanded
 | |
| !      pattern.  This is an extension. */
 | |
|     p = pat;
 | |
| !   if (pat && pat[0] == '/')
 | |
| !     {
 | |
| !       mflags |= MATCH_GLOBREP|MATCH_ANY;
 | |
| !       p++;
 | |
| !     }
 | |
|     else if (pat && pat[0] == '#')
 | |
|       {
 | |
|         mflags |= MATCH_BEG;
 | |
| --- 5746,5757 ----
 | |
|       }
 | |
|   
 | |
|     /* ksh93 doesn't allow the match specifier to be a part of the expanded
 | |
| !      pattern.  This is an extension.  Make sure we don't anchor the pattern
 | |
| !      at the beginning or end of the string if we're doing global replacement,
 | |
| !      though. */
 | |
|     p = pat;
 | |
| !   if (mflags & MATCH_GLOBREP)
 | |
| !     mflags |= MATCH_ANY;
 | |
|     else if (pat && pat[0] == '#')
 | |
|       {
 | |
|         mflags |= MATCH_BEG;
 | |
| *** ../bash-3.2/tests/new-exp.right	Thu Aug 10 12:00:00 2006
 | |
| --- tests/new-exp.right	Sun Oct 29 16:03:36 2006
 | |
| ***************
 | |
| *** 430,436 ****
 | |
|   Case06---1---A B C::---
 | |
|   Case07---3---A:B:C---
 | |
|   Case08---3---A:B:C---
 | |
| ! ./new-exp.tests: line 506: /${$(($#-1))}: bad substitution
 | |
|   argv[1] = <a>
 | |
|   argv[2] = <b>
 | |
|   argv[3] = <c>
 | |
| --- 430,436 ----
 | |
|   Case06---1---A B C::---
 | |
|   Case07---3---A:B:C---
 | |
|   Case08---3---A:B:C---
 | |
| ! ./new-exp.tests: line 506: ${$(($#-1))}: bad substitution
 | |
|   argv[1] = <a>
 | |
|   argv[2] = <b>
 | |
|   argv[3] = <c>
 | |
| *** ../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 3
 | |
|   
 | |
|   #endif /* _PATCHLEVEL_H_ */
 | |
| --- 26,30 ----
 | |
|      looks for to find the patch level (for the sccs version string). */
 | |
|   
 | |
| ! #define PATCHLEVEL 4
 | |
|   
 | |
|   #endif /* _PATCHLEVEL_H_ */
 |