sd-bus: when we get the list of well-known names back from kdbus we shouldn't confuse the empty list with unknown information

This commit is contained in:
Lennart Poettering
2014-11-27 22:02:13 +01:00
parent 771b2724c0
commit 38ce47e262
2 changed files with 15 additions and 0 deletions
+7
View File
@@ -692,6 +692,13 @@ static int bus_get_name_creds_kdbus(
c->mask |= SD_BUS_CREDS_UNIQUE_NAME;
}
/* If KDBUS_ITEM_OWNED_NAME is requested then we'll get 0 of
them in case the service has no names. This does not mean
however that the list of owned names could not be
acquired. Hence, let's explicitly clarify that the data is
complete. */
c->mask |= mask & SD_BUS_CREDS_WELL_KNOWN_NAMES;
r = bus_populate_creds_from_items(bus, conn_info, mask, c);
if (r < 0)
goto fail;
+8
View File
@@ -717,6 +717,14 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k) {
}
}
/* If we requested the list of well-known names to be appended
* and the sender had none no item for it will be
* attached. However, this does *not* mean that we the kernel
* didn't want to provide this information to us. Hence, let's
* explicitly mark this information as available if it was
* requested. */
m->creds.mask |= bus->creds_mask & SD_BUS_CREDS_WELL_KNOWN_NAMES;
r = bus_message_parse_fields(m);
if (r < 0)
goto fail;