sd-bus: fix error handling when receiving invalid service name

Also, properly keep track of incoming additional service names.
This commit is contained in:
Lennart Poettering 2014-11-25 13:23:44 +01:00
parent 6dfcc64bb5
commit 9f6dfd0624
1 changed files with 15 additions and 7 deletions

View File

@ -646,19 +646,27 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k) {
break;
case KDBUS_ITEM_DST_NAME:
if (!service_name_is_valid(d->str))
return -EBADMSG;
if (!service_name_is_valid(d->str)) {
r = -EBADMSG;
goto fail;
}
destination = d->str;
break;
case KDBUS_ITEM_OWNED_NAME:
if (!service_name_is_valid(d->name.name))
return -EBADMSG;
r = strv_extend(&m->creds.well_known_names, d->name.name);
if (r < 0)
if (!service_name_is_valid(d->name.name)) {
r = -EBADMSG;
goto fail;
}
if (bus->creds_mask & SD_BUS_CREDS_WELL_KNOWN_NAMES) {
r = strv_extend(&m->creds.well_known_names, d->name.name);
if (r < 0)
goto fail;
m->creds.mask |= SD_BUS_CREDS_WELL_KNOWN_NAMES;
}
break;
case KDBUS_ITEM_CONN_DESCRIPTION: