summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorderaadt <deraadt@openbsd.org>2015-06-13 16:57:04 +0000
committerderaadt <deraadt@openbsd.org>2015-06-13 16:57:04 +0000
commitb1b3c6071bc1d959121639b7abcfb3437dca2f54 (patch)
tree8bfe192255e92c6e2190633e2354104f85307b7e
parentAdd more encodings of options for the armv7 barrier instructions and (diff)
downloadwireguard-openbsd-b1b3c6071bc1d959121639b7abcfb3437dca2f54.tar.xz
wireguard-openbsd-b1b3c6071bc1d959121639b7abcfb3437dca2f54.zip
in glob() initialize the glob_t before the first failure check.
from j@pureftpd.org ok millert stsp
-rw-r--r--lib/libc/gen/glob.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/libc/gen/glob.c b/lib/libc/gen/glob.c
index a046ed6a377..27003b3be99 100644
--- a/lib/libc/gen/glob.c
+++ b/lib/libc/gen/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.
@@ -175,9 +175,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;
@@ -190,6 +187,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)