fnmatch(3): improve POSIX conformance.

In a recent interpretation[1], "\\" shall return a non-zero value
(indicating either no match or an error).

The fix involves a change over r254091 and now the behavior matches the
Sun/IBM/HP closed source implementations and also likely musl libc.

Submitted by:	Joerg Schilling <joerg at schily.net>
MFC after:	1 week

[1] http://austingroupbugs.net/view.php?id=806
This commit is contained in:
Pedro F. Giffuni 2017-08-10 15:42:25 +00:00
parent f8054adeb1
commit 303cbb93c5
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=322368

View File

@ -184,7 +184,8 @@ fnmatch1(const char *pattern, const char *string, const char *stringstart,
if (!(flags & FNM_NOESCAPE)) {
pclen = mbrtowc(&pc, pattern, MB_LEN_MAX,
&patmbs);
if (pclen == (size_t)-1 || pclen == (size_t)-2)
if (pclen == 0 || pclen == (size_t)-1 ||
pclen == (size_t)-2)
return (FNM_NOMATCH);
pattern += pclen;
}