mirror of git://sourceware.org/git/glibc.git
When glob pattern contains a trailing slash match only directories. Fixes bug 10278.
This commit is contained in:
parent
45c30c61c9
commit
a471e96a53
|
@ -1,3 +1,10 @@
|
||||||
|
2013-10-19 Ondřej Bílka <neleai@seznam.cz>
|
||||||
|
|
||||||
|
BZ #10278]
|
||||||
|
* posix/glob.c: Match only directories when trailing slash is present.
|
||||||
|
* posix/tst-gnuglob.c (my_opendir): Do not open files.
|
||||||
|
(main): Add testcase.
|
||||||
|
|
||||||
2013-10-19 Ondřej Bílka <neleai@seznam.cz>
|
2013-10-19 Ondřej Bílka <neleai@seznam.cz>
|
||||||
|
|
||||||
[BZ #15670]
|
[BZ #15670]
|
||||||
|
|
14
NEWS
14
NEWS
|
@ -9,13 +9,13 @@ Version 2.19
|
||||||
|
|
||||||
* The following bugs are resolved with this release:
|
* The following bugs are resolved with this release:
|
||||||
|
|
||||||
156, 431, 832, 13028, 13982, 13985, 14155, 14547, 14699, 14910, 15048,
|
156, 431, 832, 10278, 13028, 13982, 13985, 14155, 14547, 14699, 14910,
|
||||||
15218, 15277, 15308, 15362, 15400, 15427, 15522, 15531, 15532, 15608,
|
15048, 15218, 15277, 15308, 15362, 15400, 15427, 15522, 15531, 15532,
|
||||||
15609, 15610, 15632, 15640, 15670, 15672, 15680, 15681, 15723, 15734,
|
15608, 15609, 15610, 15632, 15640, 15670, 15672, 15680, 15681, 15723,
|
||||||
15735, 15736, 15748, 15749, 15754, 15760, 15764, 15797, 15844, 15847,
|
15734, 15735, 15736, 15748, 15749, 15754, 15760, 15764, 15797, 15844,
|
||||||
15849, 15855, 15856, 15857, 15859, 15867, 15886, 15887, 15890, 15892,
|
15847, 15849, 15855, 15856, 15857, 15859, 15867, 15886, 15887, 15890,
|
||||||
15893, 15895, 15897, 15905, 15909, 15919, 15921, 15923, 15939, 15948,
|
15892, 15893, 15895, 15897, 15905, 15909, 15919, 15921, 15923, 15939,
|
||||||
15963, 15966, 15988, 16032, 16034, 16036, 16041.
|
15948, 15963, 15966, 15988, 16032, 16034, 16036, 16041.
|
||||||
|
|
||||||
* CVE-2012-4412 The strcoll implementation caches indices and rules for
|
* CVE-2012-4412 The strcoll implementation caches indices and rules for
|
||||||
large collation sequences to optimize multiple passes. This cache
|
large collation sequences to optimize multiple passes. This cache
|
||||||
|
|
|
@ -276,6 +276,11 @@ glob (pattern, flags, errfunc, pglob)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* POSIX requires all slashes to be matched. This means that with
|
||||||
|
a trailing slash we must match only directories. */
|
||||||
|
if (pattern[0] && pattern[strlen (pattern) - 1] == '/')
|
||||||
|
flags |= GLOB_ONLYDIR;
|
||||||
|
|
||||||
if (!(flags & GLOB_DOOFFS))
|
if (!(flags & GLOB_DOOFFS))
|
||||||
/* Have to do this so `globfree' knows where to start freeing. It
|
/* Have to do this so `globfree' knows where to start freeing. It
|
||||||
also makes all the code that uses gl_offs simpler. */
|
also makes all the code that uses gl_offs simpler. */
|
||||||
|
|
|
@ -168,7 +168,7 @@ my_opendir (const char *s)
|
||||||
my_DIR *dir;
|
my_DIR *dir;
|
||||||
|
|
||||||
|
|
||||||
if (idx == -1)
|
if (idx == -1 || filesystem[idx].type != DT_DIR)
|
||||||
{
|
{
|
||||||
PRINTF ("my_opendir(\"%s\") == NULL\n", s);
|
PRINTF ("my_opendir(\"%s\") == NULL\n", s);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -358,7 +358,7 @@ test_result (const char *fmt, int flags, glob_t *gl, const char *str[])
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (str[inner] == NULL)
|
if (str[inner] == NULL)
|
||||||
errstr = ok ? "" : " *** WRONG";
|
errstr = ok ? "" : " *** WRONG";
|
||||||
else
|
else
|
||||||
errstr = ok ? "" : " * wrong position";
|
errstr = ok ? "" : " * wrong position";
|
||||||
|
|
||||||
|
@ -483,6 +483,12 @@ main (void)
|
||||||
"/file1lev1",
|
"/file1lev1",
|
||||||
"/file2lev1");
|
"/file2lev1");
|
||||||
|
|
||||||
|
test ("*/*/", 0 , 0,
|
||||||
|
"dir1lev1/dir1lev2/",
|
||||||
|
"dir1lev1/dir2lev2/",
|
||||||
|
"dir1lev1/dir3lev2/",
|
||||||
|
"dir2lev1/dir1lev2/");
|
||||||
|
|
||||||
test ("", 0, GLOB_NOMATCH, NULL);
|
test ("", 0, GLOB_NOMATCH, NULL);
|
||||||
|
|
||||||
test ("", GLOB_NOCHECK, 0, "");
|
test ("", GLOB_NOCHECK, 0, "");
|
||||||
|
|
Loading…
Reference in New Issue