|
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_ */ |