]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
compare: propagate errors of fnmatch() as errors
authorLennart Poettering <lennart@poettering.net>
Mon, 29 Aug 2022 09:08:18 +0000 (11:08 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 1 Sep 2022 21:16:13 +0000 (23:16 +0200)
src/shared/compare-operator.c

index 694c778a271494e85db55f19238adc53ab8efe4c..e9c7cc9b2b20335c20f39e6d2639dfe0242f3031 100644 (file)
@@ -90,6 +90,7 @@ int version_or_fnmatch_compare(
                 CompareOperator op,
                 const char *a,
                 const char *b) {
+        int r;
 
         switch (op) {
 
@@ -100,10 +101,14 @@ int version_or_fnmatch_compare(
                 return !streq_ptr(a, b);
 
         case COMPARE_FNMATCH_EQUAL:
-                return fnmatch(b, a, 0) != FNM_NOMATCH;
+                r = fnmatch(b, a, 0);
+                return r == 0 ? true :
+                        r == FNM_NOMATCH ? false : -EINVAL;
 
         case COMPARE_FNMATCH_UNEQUAL:
-                return fnmatch(b, a, 0) == FNM_NOMATCH;
+                r = fnmatch(b, a, 0);
+                return r == FNM_NOMATCH ? true:
+                        r == 0 ? false : -EINVAL;
 
         case _COMPARE_OPERATOR_ORDER_FIRST..._COMPARE_OPERATOR_ORDER_LAST:
                 return test_order(strverscmp_improved(a, b), op);