sd-bus: destination-matches cannot match NameOwnerChanged

Make sure we don't install NameOwnerChanged matches if the caller passed
a destination='' match (except if it is the broadcast address). Per spec,
all NameOwnerChanged signals are broadcasts.

Only the NameLost/NameAcquired signals are unicasts, but those are never
received through sd-bus. Instead, the bus-proxy synthesizes them and it
already installs proper matches for them.
This commit is contained in:
David Herrmann
2015-07-16 14:35:15 +02:00
parent 4f1d774135
commit 1af5f746d5

View File

@@ -1345,6 +1345,10 @@ int bus_add_match_internal_kernel(
else if (r > 0)
sz += ALIGN8(offsetof(struct kdbus_item, id) + sizeof(uint64_t));
/* if not a broadcast, it cannot be a name-change */
if (r <= 0 || dst_id != KDBUS_DST_ID_BROADCAST)
matches_name_change = false;
break;
}