]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
bus_service_remove_owner(): Assert that service has an owner
authorRalf Habacker <ralf.habacker@freenet.de>
Mon, 7 Mar 2022 15:38:25 +0000 (16:38 +0100)
committerSimon McVittie <smcv@collabora.com>
Thu, 21 Apr 2022 12:55:59 +0000 (13:55 +0100)
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>
bus/services.c

index a7dd181ebdd4c234c3eda8b64e5730eb26e99d63..cd2fb1c4329e1d9c968ed9632bdfce70d5d9223c 100644 (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);