X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fpolkit.c;h=826944585c18e8c1c13b0eac79701d0eb1b4712e;hb=3f98659cce700fea91959312297950f15011b07b;hp=9ed6ff2717683ce1f4a130a0d7b9f31263349321;hpb=bece1f5215b4ff147e000255d07f6b3cc777f15b;p=elogind.git diff --git a/src/shared/polkit.c b/src/shared/polkit.c index 9ed6ff271..826944585 100644 --- a/src/shared/polkit.c +++ b/src/shared/polkit.c @@ -56,7 +56,7 @@ int verify_polkit( return -EINVAL; ul = dbus_bus_get_unix_user(c, sender, error); - if (ul == (unsigned) -1) + if (ul == (unsigned long) -1) return -EINVAL; /* Shortcut things for root, to avoid the PK roundtrip and dependency */ @@ -112,11 +112,14 @@ int verify_polkit( reply = dbus_connection_send_with_reply_and_block(c, m, -1, error); if (!reply) { - r = -EIO; - goto finish; - } - if (dbus_set_error_from_message(error, reply)) { + /* Treat no PK available as access denied */ + if (dbus_error_has_name(error, DBUS_ERROR_SERVICE_UNKNOWN)) { + r = -EACCES; + dbus_error_free(error); + goto finish; + } + r = -EIO; goto finish; }