From 7edd8fb198f3e8a95677df8a8f5016ed40dcff54 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 14 Nov 2019 14:28:05 +0100 Subject: [PATCH] core: do not propagate polkit error to caller If we fail to start polkit, we get a message like "org.freedesktop.DBus.Error.NameHasNoOwner: Could not activate remote peer.", which has no meaning for the caller of our StartUnit method. Let's just return -EACCES. $ systemctl start apache Failed to start apache.service: Could not activate remote peer. (before) Failed to start apache.service: Access denied (after) Fixes #13865. --- src/shared/bus-util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c index 5fbc55770e1..aea46d31199 100644 --- a/src/shared/bus-util.c +++ b/src/shared/bus-util.c @@ -411,7 +411,8 @@ int bus_verify_polkit_async( e = sd_bus_message_get_error(q->reply); /* Treat no PK available as access denied */ - if (sd_bus_error_has_name(e, SD_BUS_ERROR_SERVICE_UNKNOWN)) + if (sd_bus_error_has_name(e, SD_BUS_ERROR_SERVICE_UNKNOWN) || + sd_bus_error_has_name(e, SD_BUS_ERROR_NAME_HAS_NO_OWNER)) return -EACCES; /* Copy error from polkit reply */ @@ -422,7 +423,6 @@ int bus_verify_polkit_async( r = sd_bus_message_enter_container(q->reply, 'r', "bba{ss}"); if (r >= 0) r = sd_bus_message_read(q->reply, "bb", &authorized, &challenge); - if (r < 0) return r; -- 2.39.2