about summary refs log tree commit diff
path: root/src/regex/glob.c
Commit message (Collapse)AuthorAgeFilesLines
* fix regression in glob with literal . or .. path componentRich Felker2017-10-211-3/+5
| | | | | | | | | | | | | | | | commit 8c4be3e2209d2a1d3874b8bc2b474668fcbbbac6 was written to preclude the GLOB_PERIOD extension from matching these directory entries, but also precluded literal matches. adjust the check that excludes . and .. to check whether the GLOB_PERIOD flag is in effect, so that it cannot alter behavior in cases governed by the standard, and also don't exclude . or .. in any case where normal glob behavior (fnmatch's FNM_PERIOD flag) would have included one or both of them (patterns such as ".*"). it's still not clear whether this is the preferred behavior for GLOB_PERIOD, but at least it's clear that it can no longer break applications which are not relying on quirks of a nonstandard feature.
* fix glob descent into . and .. with GLOB_PERIODRich Felker2017-09-061-0/+4
| | | | | | | | | GLOB_PERIOD is a gnu extension, and GNU glob does not seem to honor it except in the last path component. it's not clear whether this a bug or intentional, but it seems reasonable that it should exclude the special entries . and .. when walking. changes based on report and analysis by Julien Ramseier.
* fix glob failure to match plain "/" to root directoryRich Felker2017-06-081-1/+1
| | | | | | | | the check to prevent matching empty string wrongly blocked matching of "/" due to checking emptiness after stripping leading slashes rather than checking the full original argument string. simplified from patch by Julien Ramseier.
* make globfree safe after failed glob from over-length argumentRich Felker2017-01-021-2/+2
| | | | | | | | | | | | commit 0dc99ac413d8bc054a2e95578475c7122455eee8 added input length checking to avoid unsafe VLA allocation, but put it in the wrong place, before the glob_t structure was zeroed out. while POSIX isn't clear on whether it's permitted to call globfree after glob failed with GLOB_NOSPACE, making it safe is clearly better than letting uninitialized pointers get passed to free in non-conforming callers. while we're fixing this, change strlen check to the idiomatic strnlen version to avoid unbounded input scanning before returning an error.
* include cleanups: remove unused headers and add feature test macrosSzabolcs Nagy2013-12-121-2/+0
|
* use restrict everywhere it's required by c99 and/or posix 2008Rich Felker2012-09-061-1/+1
| | | | | | | | to deal with the fact that the public headers may be used with pre-c99 compilers, __restrict is used in place of restrict, and defined appropriately for any supported compiler. we also avoid the form [restrict] since older versions of gcc rejected it due to a bug in the original c99 standard, and instead use the form *restrict.
* make glob mark symlinks-to-directories with the GLOB_MARK flagRich Felker2012-01-231-1/+1
| | | | | | POSIX is unclear on whether it should, but all historical implementations seem to behave this way, and it seems more useful to applications.
* support GLOB_PERIOD flag (GNU extension) to glob functionRich Felker2012-01-221-1/+2
| | | | patch by sh4rm4
* fix handling of d_name in struct direntRich Felker2011-06-061-3/+2
| | | | | | | | | | | | basically there are 3 choices for how to implement this variable-size string member: 1. C99 flexible array member: breaks using dirent.h with pre-C99 compiler. 2. old way: length-1 string: generates array bounds warnings in caller. 3. new way: length-NAME_MAX string. no problems, simplifies all code. of course the usable part in the pointer returned by readdir might be shorter than NAME_MAX+1 bytes, but that is allowed by the standard and doesn't hurt anything.
* safety fix for glob's vla usage: disallow patterns longer than PATH_MAXRich Felker2011-06-051-0/+2
| | | | | | | | | | | this actually inadvertently disallows some valid patterns with redundant / or * characters, but it's better than allowing unbounded vla allocation. eventually i'll write code to move the pattern to the stack and eliminate redundancy to ensure that it fits in PATH_MAX at the beginning of glob. this would also allow it to be modified in place for passing to fnmatch rather than copied at each level of recursion.
* initial check-in, version 0.5.0 v0.5.0Rich Felker2011-02-121-0/+238