From 6397489bc4eebc6f8088ab860a8317a27c65fd24 Mon Sep 17 00:00:00 2001 From: Andrei Emeltchenko Date: Tue, 3 Dec 2013 17:53:08 +0200 Subject: [PATCH] android/a2dp: Fix possible NULL dereference Since a2dp_record may return NULL, check return value. This silences static analysers tools. --- android/a2dp.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/android/a2dp.c b/android/a2dp.c index cee4bfaf3..107cbb8be 100644 --- a/android/a2dp.c +++ b/android/a2dp.c @@ -366,13 +366,15 @@ bool bt_a2dp_register(const bdaddr_t *addr) } rec = a2dp_record(); + if (!rec) { + error("Failed to allocate A2DP record"); + goto fail; + } + if (bt_adapter_add_record(rec, SVC_HINT_CAPTURING) < 0) { - error("Failed to register on A2DP record"); + error("Failed to register A2DP record"); sdp_record_free(rec); - g_io_channel_shutdown(server, TRUE, NULL); - g_io_channel_unref(server); - server = NULL; - return false; + goto fail; } record_id = rec->handle; @@ -380,6 +382,12 @@ bool bt_a2dp_register(const bdaddr_t *addr) G_N_ELEMENTS(cmd_handlers)); return true; + +fail: + g_io_channel_shutdown(server, TRUE, NULL); + g_io_channel_unref(server); + server = NULL; + return false; } static void a2dp_device_disconnected(gpointer data, gpointer user_data) -- 2.47.3