1
0
mirror of https://github.com/systemd/systemd.git synced 2025-01-11 09:18:07 +03:00

Merge pull request #10994 from poettering/sd-bus-tweaks

small sd-bus tweaks
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2018-12-06 15:26:05 +01:00 committed by GitHub
commit a91f96ad39
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -430,7 +430,7 @@ _public_ int sd_bus_get_name_creds(
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply_unique = NULL, *reply = NULL;
_cleanup_(sd_bus_creds_unrefp) sd_bus_creds *c = NULL;
const char *unique = NULL;
const char *unique;
pid_t pid = 0;
int r;
@ -459,9 +459,12 @@ _public_ int sd_bus_get_name_creds(
if (!BUS_IS_OPEN(bus->state))
return -ENOTCONN;
/* Only query the owner if the caller wants to know it or if
* the caller just wants to check whether a name exists */
if ((mask & SD_BUS_CREDS_UNIQUE_NAME) || mask == 0) {
/* If the name is unique anyway, we can use it directly */
unique = name[0] == ':' ? name : NULL;
/* Only query the owner if the caller wants to know it and the name is not unique anyway, or if the caller just
* wants to check whether a name exists */
if ((FLAGS_SET(mask, SD_BUS_CREDS_UNIQUE_NAME) && !unique) || mask == 0) {
r = sd_bus_call_method(
bus,
"org.freedesktop.DBus",
@ -483,6 +486,7 @@ _public_ int sd_bus_get_name_creds(
if (mask != 0) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
bool need_pid, need_uid, need_selinux, need_separate_calls;
c = bus_creds_new();
if (!c)
return -ENOMEM;
@ -661,7 +665,7 @@ _public_ int sd_bus_get_name_creds(
NULL,
&reply,
"s",
unique ? unique : name);
unique ?: name);
if (r < 0)
return r;
@ -688,7 +692,7 @@ _public_ int sd_bus_get_name_creds(
&error,
&reply,
"s",
unique ? unique : name);
unique ?: name);
if (r < 0) {
if (!sd_bus_error_has_name(&error, "org.freedesktop.DBus.Error.SELinuxSecurityContextUnknown"))
return r;
@ -699,7 +703,7 @@ _public_ int sd_bus_get_name_creds(
if (r < 0)
return r;
c->label = strndup(p, sz);
c->label = memdup_suffix0(p, sz);
if (!c->label)
return -ENOMEM;