diff options
author | Damien Miller <djm@mindrot.org> | 2019-11-15 06:02:27 +0100 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2019-11-15 06:02:27 +0100 |
commit | fd37cdeafe25adfcdc752280f535d28de7997ff1 (patch) | |
tree | c5e80b2910ada719f68421e1257c61ce15ba5744 /openbsd-compat | |
parent | upstream commit (diff) | |
download | openssh-fd37cdeafe25adfcdc752280f535d28de7997ff1.tar.xz openssh-fd37cdeafe25adfcdc752280f535d28de7997ff1.zip |
upstream commit
revision 1.43
date: 2015/06/13 16:57:04; author: deraadt; state: Exp; lines: +4 -4; commitid: zOUKuqWBdOPOz1SZ;
in glob() initialize the glob_t before the first failure check.
from j@pureftpd.org
ok millert stsp
Diffstat (limited to 'openbsd-compat')
-rw-r--r-- | openbsd-compat/glob.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/openbsd-compat/glob.c b/openbsd-compat/glob.c index e90265971..d4e052fa0 100644 --- a/openbsd-compat/glob.c +++ b/openbsd-compat/glob.c @@ -1,4 +1,4 @@ -/* $OpenBSD: glob.c,v 1.42 2015/02/05 12:59:57 millert Exp $ */ +/* $OpenBSD: glob.c,v 1.43 2015/06/13 16:57:04 deraadt Exp $ */ /* * Copyright (c) 1989, 1993 * The Regents of the University of California. All rights reserved. @@ -186,9 +186,6 @@ 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 = (u_char *) pattern; if (!(flags & GLOB_APPEND)) { pglob->gl_pathc = 0; @@ -201,6 +198,9 @@ glob(const char *pattern, int flags, int (*errfunc)(const char *, int), pglob->gl_errfunc = errfunc; pglob->gl_matchc = 0; + if (strnlen(pattern, PATH_MAX) == PATH_MAX) + return(GLOB_NOMATCH); + if (pglob->gl_offs < 0 || pglob->gl_pathc < 0 || pglob->gl_offs >= INT_MAX || pglob->gl_pathc >= INT_MAX || pglob->gl_pathc >= INT_MAX - pglob->gl_offs - 1) |