]> granicus.if.org Git - sudo/commitdiff
Move pattern length check until after we have initialized the glob_t
authorTodd C. Miller <Todd.Miller@courtesan.com>
Sat, 13 Jun 2015 14:13:48 +0000 (08:13 -0600)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Sat, 13 Jun 2015 14:13:48 +0000 (08:13 -0600)
so we can call globfree() even on error.  From Frank Denis.

lib/util/glob.c

index 1cb0574cc488f1522c5263efe11975679f7e7e60..8d4f262d20604be882581ca6860f1ee69990e5dc 100644 (file)
@@ -203,9 +203,6 @@ sudo_glob(const char *pattern, int flags, int (*errfunc)(const char *, int),
        Char *bufnext, *bufend, patbuf[PATH_MAX];
        struct glob_lim limit = { 0, 0, 0 };
 
-       if (strnlen(pattern, PATH_MAX) == PATH_MAX)
-               return GLOB_NOMATCH;
-
        patnext = (unsigned char *) pattern;
        if (!(flags & GLOB_APPEND)) {
                pglob->gl_pathc = 0;
@@ -222,6 +219,9 @@ sudo_glob(const char *pattern, int flags, int (*errfunc)(const char *, int),
            pglob->gl_pathc >= INT_MAX - pglob->gl_offs - 1)
                return GLOB_NOSPACE;
 
+       if (strnlen(pattern, PATH_MAX) == PATH_MAX)
+               return GLOB_NOMATCH;
+
        bufnext = patbuf;
        bufend = bufnext + PATH_MAX - 1;
        if (flags & GLOB_NOESCAPE)