]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core/exec-credential: emit correct error on invalid cred source
authorMike Yuan <me@yhndnzj.com>
Wed, 31 Jul 2024 21:38:25 +0000 (23:38 +0200)
committerMike Yuan <me@yhndnzj.com>
Sun, 4 Aug 2024 04:51:28 +0000 (06:51 +0200)
The (!source && !search_path) branch is effectively not reached,
but rather confusing. Let's return -EINVAL properly.

src/core/exec-credential.c

index e06fc21c315a75032031d4a29c46516f89ac7e46..695c820f9c89cefcfa7172d3189e7ad8d0e2fcfa 100644 (file)
@@ -547,10 +547,10 @@ static int load_credential(
 
         ReadFullFileFlags flags = READ_FULL_FILE_SECURE|READ_FULL_FILE_FAIL_WHEN_LARGER;
         _cleanup_strv_free_ char **search_path = NULL;
-        _cleanup_(erase_and_freep) char *data = NULL;
         _cleanup_free_ char *bindname = NULL;
         const char *source = NULL;
-        bool missing_ok = true;
+        bool missing_ok;
+        _cleanup_(erase_and_freep) char *data = NULL;
         size_t size, maxsz;
         int r;
 
@@ -603,7 +603,7 @@ static int load_credential(
 
                 missing_ok = true;
         } else
-                source = NULL;
+                return -EINVAL;
 
         if (args->encrypted) {
                 flags |= READ_FULL_FILE_UNBASE64;
@@ -638,7 +638,7 @@ static int load_credential(
                                 bindname,
                                 &data, &size);
         else
-                r = -ENOENT;
+                assert_not_reached();
 
         if (r == -ENOENT && (missing_ok || hashmap_contains(args->context->set_credentials, id))) {
                 /* Make a missing inherited credential non-fatal, let's just continue. After all apps