chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
localectl: use automatic cleanup
[elogind.git]
/
src
/
shared
/
polkit.c
diff --git
a/src/shared/polkit.c
b/src/shared/polkit.c
index 9ed6ff2717683ce1f4a130a0d7b9f31263349321..826944585c18e8c1c13b0eac79701d0eb1b4712e 100644
(file)
--- 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);
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 */
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) {
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;
}
r = -EIO;
goto finish;
}