bus_service_remove_owner(): Assert that service has an owner

gcc 10.3 warns that link->data is a possible NULL dereference.
However, that can't actually happen without an earlier programming
error, because bus_service_remove_owner() is only valid to call for
a connection that is currently in the queue to own the service,
in which case we know _bus_service_find_owner_link() will succeed.

Part-of: https://gitlab.freedesktop.org/dbus/dbus/-/merge_requests/275
Reviewed-by: Simon McVittie <smcv@collabora.com>
This commit is contained in:
Ralf Habacker 2022-03-07 16:38:25 +01:00 committed by Simon McVittie
parent 21a6441f33
commit b90b838c93

View file

@ -1148,6 +1148,10 @@ bus_service_remove_owner (BusService *service,
BusOwner *temp_owner;
link = _bus_service_find_owner_link (service, connection);
/* This function is only valid to call if connection owns service.
* If that's the case, we should always find connection in the
* list of owners. */
_dbus_assert (link != NULL);
_dbus_list_unlink (&service->owners, link);
temp_owner = (BusOwner *)link->data;
bus_owner_unref (temp_owner);