]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
bus-polkit: don't return positive in varlink_verify_polkit_async() just because we... 30961/head
authorLennart Poettering <lennart@poettering.net>
Tue, 16 Jan 2024 12:27:32 +0000 (13:27 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 16 Jan 2024 12:59:49 +0000 (13:59 +0100)
A positive return value means "access granted", hence if we already
reply to the method call don't accidentally return positive.

Follow-up for: d04c1a1c8e7c95daa483d8d52d5fc4c25fbc67f2

src/shared/bus-polkit.c

index 1043d33b5e6577446b138ea82099be3497152746..d05c474e7f06bf7a061c719390a0d5806a057174 100644 (file)
@@ -747,10 +747,9 @@ int varlink_verify_polkit_async(
                 if (r < 0) {
                         /* Reply with a nice error */
                         if (sd_bus_error_has_name(&error, SD_BUS_ERROR_INTERACTIVE_AUTHORIZATION_REQUIRED))
-                                return varlink_error(link, VARLINK_ERROR_INTERACTIVE_AUTHENTICATION_REQUIRED, NULL);
-
-                        if (ERRNO_IS_NEG_PRIVILEGE(r))
-                                return varlink_error(link, VARLINK_ERROR_PERMISSION_DENIED, NULL);
+                                (void) varlink_error(link, VARLINK_ERROR_INTERACTIVE_AUTHENTICATION_REQUIRED, NULL);
+                        else if (ERRNO_IS_NEG_PRIVILEGE(r))
+                                (void) varlink_error(link, VARLINK_ERROR_PERMISSION_DENIED, NULL);
 
                         return r;
                 }