* glob.c (glob) [SV 18123]: Cherry-pick glibc fix
authorPaul Smith <psmith@gnu.org>
Sun, 20 Oct 2013 17:18:03 +0000 (13:18 -0400)
committerPaul Smith <psmith@gnu.org>
Sun, 20 Oct 2013 17:18:50 +0000 (13:18 -0400)
Apply commit a471e96a5352a5f0bde6d32dd36d33524811a2b1 from
git://sourceware.org/git/glibc.git to fix
https://sourceware.org/bugzilla/show_bug.cgi?id=10278

glob/ChangeLog
glob/glob.c

index 8f0739c2b3516801c1a01751a5293991172465f0..c543c850a60c0ce3ed332135316e3acd96374838 100644 (file)
@@ -1,3 +1,9 @@
+2013-10-20  Paul Smith  <psmith@gnu.org>
+
+       * glob.c (glob): Cherry-pick a471e96a5352a5f0bde6d32dd36d33524811a2b1
+       from git://sourceware.org/git/glibc.git to fix SV 18123,
+       https://sourceware.org/bugzilla/show_bug.cgi?id=10278
+
 2008-09-28  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
 
        * glob.c (my_realloc) [__DJGPP__]: Don't define, and don't
index 1a1920519b17f2034a1d855c57f00e818e5b796e..f3911bcd861f0b254875bbd19465968a925dd27e 100644 (file)
@@ -377,6 +377,11 @@ glob (pattern, flags, errfunc, pglob)
       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_BRACE)
     {
       const char *begin = strchr (pattern, '{');