[PATCH v2 5/5] kunit: validate glob filter patterns before use
From: Josh Law
Date: Sun Mar 15 2026 - 17:18:52 EST
kunit_parse_glob_filter() accepts user-provided glob patterns via the
filter_glob module parameter but does not check whether they are
well-formed. A malformed pattern like "suite[.test" (unclosed bracket)
or "suite\" (trailing backslash) is silently passed to glob_match()
which handles it gracefully but not in the way the user likely intended
— the bracket is matched as a literal character rather than starting a
character class.
Use glob_validate() to reject malformed patterns early with -EINVAL,
so users get a clear error instead of silently wrong filter results.
Signed-off-by: Josh Law <objecting@xxxxxxxxxxxxx>
---
lib/kunit/executor.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/lib/kunit/executor.c b/lib/kunit/executor.c
index 1fef217de11d..f0cc15e4b34d 100644
--- a/lib/kunit/executor.c
+++ b/lib/kunit/executor.c
@@ -91,6 +91,8 @@ static int kunit_parse_glob_filter(struct kunit_glob_filter *parsed,
const char *period = strchr(filter_glob, '.');
if (!period) {
+ if (!glob_validate(filter_glob))
+ return -EINVAL;
parsed->suite_glob = kstrdup(filter_glob, GFP_KERNEL);
if (!parsed->suite_glob)
return -ENOMEM;
@@ -102,12 +104,23 @@ static int kunit_parse_glob_filter(struct kunit_glob_filter *parsed,
if (!parsed->suite_glob)
return -ENOMEM;
+ if (!glob_validate(parsed->suite_glob)) {
+ kfree(parsed->suite_glob);
+ return -EINVAL;
+ }
+
parsed->test_glob = kstrdup(period + 1, GFP_KERNEL);
if (!parsed->test_glob) {
kfree(parsed->suite_glob);
return -ENOMEM;
}
+ if (!glob_validate(parsed->test_glob)) {
+ kfree(parsed->test_glob);
+ kfree(parsed->suite_glob);
+ return -EINVAL;
+ }
+
return 0;
}
--
2.34.1