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:
commit
a91f96ad39
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user