I was working on the bluetooth code, and I wanted to be sure that the device couldn't be in an invalid state in pa_bluetooth_transport_put(). That made it a bit easier to reason about the code. --- src/modules/bluetooth/backend-native.c | 3 +++ src/modules/bluetooth/backend-ofono.c | 3 +++ src/modules/bluetooth/bluez5-util.c | 3 +++ 3 files changed, 9 insertions(+) diff --git a/src/modules/bluetooth/backend-native.c b/src/modules/bluetooth/backend-native.c index 8d9d95c..c9f0ed4 100644 --- a/src/modules/bluetooth/backend-native.c +++ b/src/modules/bluetooth/backend-native.c @@ -338,6 +338,9 @@ static DBusMessage *profile_new_connection(DBusConnection *conn, DBusMessage *m, if (d == NULL) { pa_log_error("Device doesnt exist for %s", path); goto fail; + } else if (!d->valid) { + pa_log_error("Device %s is invalid.", path); + goto fail; } pa_assert_se(dbus_message_iter_next(&arg_i)); diff --git a/src/modules/bluetooth/backend-ofono.c b/src/modules/bluetooth/backend-ofono.c index 755df9e..8e43f30 100644 --- a/src/modules/bluetooth/backend-ofono.c +++ b/src/modules/bluetooth/backend-ofono.c @@ -251,6 +251,9 @@ static void hf_audio_agent_card_found(pa_bluetooth_backend *backend, const char if (!d) { pa_log_error("Device doesnt exist for %s", path); goto fail; + } else if (!d->valid) { + pa_log_error("Device %s is invalid.", path); + goto fail; } card->transport = pa_bluetooth_transport_new(d, backend->ofono_bus_id, path, PA_BLUETOOTH_PROFILE_HEADSET_AUDIO_GATEWAY, NULL, 0); diff --git a/src/modules/bluetooth/bluez5-util.c b/src/modules/bluetooth/bluez5-util.c index 03c76bf..379a40e 100644 --- a/src/modules/bluetooth/bluez5-util.c +++ b/src/modules/bluetooth/bluez5-util.c @@ -136,6 +136,9 @@ pa_bluetooth_transport *pa_bluetooth_transport_new(pa_bluetooth_device *d, const pa_bluetooth_profile_t p, const uint8_t *config, size_t size) { pa_bluetooth_transport *t; + pa_assert(d); + pa_assert(d->valid); + t = pa_xnew0(pa_bluetooth_transport, 1); t->device = d; t->owner = pa_xstrdup(owner); -- 2.8.1