From: Ismagil Iskakov <i.iskakov@omp.ru>
To: <linux-bluetooth@vger.kernel.org>
Cc: Ismagil Iskakov <i.iskakov@omp.ru>
Subject: [PATCH BlueZ v3 2/4] profiles/audio: add nullity checks
Date: Wed, 9 Jul 2025 15:18:50 +0300 [thread overview]
Message-ID: <20250709121852.2811885-3-i.iskakov@omp.ru> (raw)
In-Reply-To: <20250709121852.2811885-1-i.iskakov@omp.ru>
Cover bass_setup unsuccessful search and btd_device_get_service.
This change is motivated by the other usages where checks for
NULL exist.
---
profiles/audio/a2dp.c | 35 +++++++++++++++++++++++++----------
profiles/audio/avrcp.c | 24 +++++++++++++++++++++---
profiles/audio/bass.c | 3 +++
3 files changed, 49 insertions(+), 13 deletions(-)
diff --git a/profiles/audio/a2dp.c b/profiles/audio/a2dp.c
index d2c2bec65..42d976156 100644
--- a/profiles/audio/a2dp.c
+++ b/profiles/audio/a2dp.c
@@ -646,6 +646,19 @@ static gboolean auto_config(gpointer data)
struct btd_service *service;
struct a2dp_stream *stream;
+ dev = avdtp_get_device(setup->session);
+
+ if (setup->sep->type == AVDTP_SEP_TYPE_SOURCE) {
+ service = btd_device_get_service(dev, A2DP_SINK_UUID);
+ } else {
+ service = btd_device_get_service(dev, A2DP_SOURCE_UUID);
+ }
+
+ if (service == NULL) {
+ error("Unable to find btd service");
+ return FALSE;
+ }
+
/* Check if configuration was aborted */
stream = queue_find(setup->sep->streams, match_stream, setup->stream);
if (!stream)
@@ -654,16 +667,12 @@ static gboolean auto_config(gpointer data)
if (setup->err != NULL)
goto done;
- dev = avdtp_get_device(setup->session);
-
avdtp_stream_add_cb(setup->session, setup->stream,
stream_state_changed, setup->sep);
if (setup->sep->type == AVDTP_SEP_TYPE_SOURCE) {
- service = btd_device_get_service(dev, A2DP_SINK_UUID);
sink_new_stream(service, setup->session, setup->stream);
} else {
- service = btd_device_get_service(dev, A2DP_SOURCE_UUID);
source_new_stream(service, setup->session, setup->stream);
}
@@ -995,10 +1004,20 @@ static void setconf_cfm(struct avdtp *session, struct avdtp_local_sep *sep,
struct btd_service *service;
int ret;
- if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)
+ dev = avdtp_get_device(session);
+
+ if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK) {
DBG("Sink %p: Set_Configuration_Cfm", sep);
- else
+ service = btd_device_get_service(dev, A2DP_SOURCE_UUID);
+ } else {
DBG("Source %p: Set_Configuration_Cfm", sep);
+ service = btd_device_get_service(dev, A2DP_SINK_UUID);
+ }
+
+ if (service == NULL) {
+ error("Unable to find btd service");
+ return;
+ }
setup = find_setup_by_session(session);
@@ -1024,14 +1043,10 @@ static void setconf_cfm(struct avdtp *session, struct avdtp_local_sep *sep,
if (!setup)
return;
- dev = avdtp_get_device(session);
-
/* Notify D-Bus interface of the new stream */
if (a2dp_sep->type == AVDTP_SEP_TYPE_SOURCE) {
- service = btd_device_get_service(dev, A2DP_SINK_UUID);
sink_new_stream(service, session, setup->stream);
} else {
- service = btd_device_get_service(dev, A2DP_SOURCE_UUID);
source_new_stream(service, session, setup->stream);
}
diff --git a/profiles/audio/avrcp.c b/profiles/audio/avrcp.c
index b3e69874d..0aee42c52 100644
--- a/profiles/audio/avrcp.c
+++ b/profiles/audio/avrcp.c
@@ -3062,8 +3062,14 @@ static void set_ct_player(struct avrcp *session, struct avrcp_player *player)
if (session->controller->player == player)
goto done;
- session->controller->player = player;
service = btd_device_get_service(session->dev, AVRCP_TARGET_UUID);
+
+ if (service == NULL) {
+ error("Unable to find btd service");
+ return;
+ }
+
+ session->controller->player = player;
control_set_player(service, player ?
media_player_get_path(player->user_data) : NULL);
@@ -4258,12 +4264,18 @@ static void target_init(struct avrcp *session)
if (session->target != NULL)
return;
+ service = btd_device_get_service(session->dev, AVRCP_REMOTE_UUID);
+
+ if (service == NULL) {
+ error("Unable to find btd service");
+ return;
+ }
+
target = data_init(session, AVRCP_REMOTE_UUID);
session->target = target;
DBG("%p version 0x%04x", target, target->version);
- service = btd_device_get_service(session->dev, AVRCP_REMOTE_UUID);
btd_service_connecting_complete(service, 0);
player = g_slist_nth_data(server->players, 0);
@@ -4312,6 +4324,13 @@ static void controller_init(struct avrcp *session)
if (session->controller != NULL)
return;
+ service = btd_device_get_service(session->dev, AVRCP_TARGET_UUID);
+
+ if (service == NULL) {
+ error("Unable to find btd service");
+ return;
+ }
+
controller = data_init(session, AVRCP_TARGET_UUID);
session->controller = controller;
@@ -4319,7 +4338,6 @@ static void controller_init(struct avrcp *session)
if (controller->obex_port)
DBG("%p OBEX PSM 0x%04x", controller, controller->obex_port);
- service = btd_device_get_service(session->dev, AVRCP_TARGET_UUID);
btd_service_connecting_complete(service, 0);
/* Only create player if category 1 is supported */
diff --git a/profiles/audio/bass.c b/profiles/audio/bass.c
index c853fbc4a..87db130da 100644
--- a/profiles/audio/bass.c
+++ b/profiles/audio/bass.c
@@ -349,6 +349,9 @@ static void bap_state_changed(struct bt_bap_stream *stream, uint8_t old_state,
struct bass_setup *setup = queue_find(dg->setups,
match_setup_stream, stream);
+ if (setup == NULL)
+ return;
+
if (dg->bap != bap)
return;
--
2.34.1
next prev parent reply other threads:[~2025-07-09 12:20 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-09 12:18 [PATCH BlueZ v3 0/4] Fix bugs found by static analysis Ismagil Iskakov
2025-07-09 12:18 ` [PATCH BlueZ v3 1/4] btio: fix range validation of security level Ismagil Iskakov
2025-07-09 13:40 ` Fix bugs found by static analysis bluez.test.bot
2025-07-09 12:18 ` Ismagil Iskakov [this message]
2025-07-09 12:18 ` [PATCH BlueZ v3 3/4] src/shared: add nullity checks Ismagil Iskakov
2025-07-09 12:18 ` [PATCH BlueZ v3 4/4] obexd/client: fix err condition causing memleak Ismagil Iskakov
2025-07-09 12:53 ` [PATCH BlueZ v3 0/4] Fix bugs found by static analysis Luiz Augusto von Dentz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250709121852.2811885-3-i.iskakov@omp.ru \
--to=i.iskakov@omp.ru \
--cc=linux-bluetooth@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox