>From 751514ea4622584b2e390e96ca38fcd069408cff Mon Sep 17 00:00:00 2001 From: raf Date: Wed, 8 Oct 2025 12:55:58 +1100 Subject: [PATCH] fnmatch: fix infinite loop when pattern is non-character byte --- src/regex/fnmatch.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/regex/fnmatch.c b/src/regex/fnmatch.c index 978fff88..d3ee699f 100644 --- a/src/regex/fnmatch.c +++ b/src/regex/fnmatch.c @@ -302,7 +302,9 @@ int fnmatch(const char *pat, const char *str, int flags) int c; if (flags & FNM_PATHNAME) for (;;) { for (s=str; *s && *s!='/'; s++); - for (p=pat; (c=pat_next(p, -1, &inc, flags))!=END && c!='/'; p+=inc); + for (p=pat; (c=pat_next(p, -1, &inc, flags))!=END && c!=UNMATCHABLE && c!='/'; p+=inc); + if (c == UNMATCHABLE) + return FNM_NOMATCH; if (c!=*s && (!*s || !(flags & FNM_LEADING_DIR))) return FNM_NOMATCH; if (fnmatch_internal(pat, p-pat, str, s-str, flags)) -- 2.50.0