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