usr/src/cmd/bash/Patches-4.0/bash40-034
branchoi_151a
changeset 254 9c2a4ac793f0
equal deleted inserted replaced
253:702bbe36863b 254:9c2a4ac793f0
       
     1 			     BASH PATCH REPORT
       
     2 			     =================
       
     3 
       
     4 Bash-Release:	4.0
       
     5 Patch-ID:	bash40-034
       
     6 
       
     7 Bug-Reported-by:	Anders Kaseorg <[email protected]>
       
     8 Bug-Reference-ID:	<[email protected]>
       
     9 Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2009-09/msg00043.html
       
    10 
       
    11 Bug-Description:
       
    12 
       
    13 When using the globstar option, bash incorrectly interprets wildcarded path
       
    14 components between a **/ and the last / as matching any path, even if the
       
    15 constructed path does not match any files.
       
    16 
       
    17 Patch:
       
    18 
       
    19 *** ../bash-4.0-patched/lib/glob/glob.c	2009-07-22 23:18:50.000000000 -0400
       
    20 --- lib/glob/glob.c	2009-09-18 17:53:25.000000000 -0400
       
    21 ***************
       
    22 *** 920,928 ****
       
    23   	  char **temp_results;
       
    24   
       
    25   	  /* Scan directory even on a NULL filename.  That way, `*h/'
       
    26   	     returns only directories ending in `h', instead of all
       
    27   	     files ending in `h' with a `/' appended. */
       
    28   	  dname = directories[i];
       
    29 ! 	  dflags = flags & ~GX_MARKDIRS;
       
    30   	  if ((flags & GX_GLOBSTAR) && filename[0] == '*' && filename[1] == '*' && filename[2] == '\0')
       
    31   	    dflags |= GX_ALLDIRS|GX_ADDCURDIR;
       
    32 --- 927,938 ----
       
    33   	  char **temp_results;
       
    34   
       
    35 + 	  /* XXX -- we've recursively scanned any directories resulting from
       
    36 + 	     a `**', so turn off the flag.  We turn it on again below if
       
    37 + 	     filename is `**' */
       
    38   	  /* Scan directory even on a NULL filename.  That way, `*h/'
       
    39   	     returns only directories ending in `h', instead of all
       
    40   	     files ending in `h' with a `/' appended. */
       
    41   	  dname = directories[i];
       
    42 ! 	  dflags = flags & ~(GX_MARKDIRS|GX_ALLDIRS|GX_ADDCURDIR);
       
    43   	  if ((flags & GX_GLOBSTAR) && filename[0] == '*' && filename[1] == '*' && filename[2] == '\0')
       
    44   	    dflags |= GX_ALLDIRS|GX_ADDCURDIR;
       
    45 *** ../bash-4.0/patchlevel.h	2009-01-04 14:32:40.000000000 -0500
       
    46 --- patchlevel.h	2009-02-22 16:11:31.000000000 -0500
       
    47 ***************
       
    48 *** 26,30 ****
       
    49      looks for to find the patch level (for the sccs version string). */
       
    50   
       
    51 ! #define PATCHLEVEL 33
       
    52   
       
    53   #endif /* _PATCHLEVEL_H_ */
       
    54 --- 26,30 ----
       
    55      looks for to find the patch level (for the sccs version string). */
       
    56   
       
    57 ! #define PATCHLEVEL 34
       
    58   
       
    59   #endif /* _PATCHLEVEL_H_ */