mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
dbus: keep a ref to DBusConnection if reconnecting is not handled
Several places in the code don't handle reconnecting DBus connections yet. In those cases, a ref to the DBusConnection handle needs to be kept, so that there's no use-after-free if it gets freed by spa_dbus if the connection is broken. Adjust spa_dbus so that others keeping additional refs is safe.
This commit is contained in:
parent
cb6dbd165a
commit
2b515b5e50
6 changed files with 58 additions and 9 deletions
|
|
@ -55,8 +55,10 @@ void *dbus_request_name(struct pw_context *context, const char *name)
|
|||
return NULL;
|
||||
|
||||
bus = spa_dbus_connection_get(conn);
|
||||
if (bus == NULL)
|
||||
if (bus == NULL) {
|
||||
spa_dbus_connection_destroy(conn);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dbus_error_init(&error);
|
||||
|
||||
|
|
@ -72,6 +74,8 @@ void *dbus_request_name(struct pw_context *context, const char *name)
|
|||
|
||||
dbus_error_free(&error);
|
||||
|
||||
spa_dbus_connection_destroy(conn);
|
||||
|
||||
errno = EEXIST;
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue