From 94e548120b3c2676e79833c765920c69d031f8c1 Mon Sep 17 00:00:00 2001 From: Emil Gydesen Date: Tue, 27 Aug 2024 18:02:56 +0200 Subject: [PATCH] Bluetooth: BAP: SD: Added missing bad code when using mod_src When the encrypt state was changed via bt_bap_scan_delegator_mod_src then we didn't set the bad broadcast code correctly. Signed-off-by: Emil Gydesen --- subsys/bluetooth/audio/bap_scan_delegator.c | 6 ++++++ .../bsim/bluetooth/audio/src/bap_broadcast_assistant_test.c | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/subsys/bluetooth/audio/bap_scan_delegator.c b/subsys/bluetooth/audio/bap_scan_delegator.c index 191eddadf16..c13da60581a 100644 --- a/subsys/bluetooth/audio/bap_scan_delegator.c +++ b/subsys/bluetooth/audio/bap_scan_delegator.c @@ -1469,6 +1469,12 @@ int bt_bap_scan_delegator_mod_src(const struct bt_bap_scan_delegator_mod_src_par if (state->encrypt_state != param->encrypt_state) { state->encrypt_state = param->encrypt_state; + + if (state->encrypt_state == BT_BAP_BIG_ENC_STATE_BAD_CODE) { + (void)memcpy(state->bad_code, internal_state->broadcast_code, + sizeof(internal_state->state.bad_code)); + } + state_changed = true; } diff --git a/tests/bsim/bluetooth/audio/src/bap_broadcast_assistant_test.c b/tests/bsim/bluetooth/audio/src/bap_broadcast_assistant_test.c index f46fd506f01..0a4e4b234d0 100644 --- a/tests/bsim/bluetooth/audio/src/bap_broadcast_assistant_test.c +++ b/tests/bsim/bluetooth/audio/src/bap_broadcast_assistant_test.c @@ -142,7 +142,11 @@ static void bap_broadcast_assistant_recv_state_cb( SET_FLAG(flag_broadcast_code_requested); } else if (state->encrypt_state == BT_BAP_BIG_ENC_STATE_BAD_CODE) { SET_FLAG(flag_incorrect_broadcast_code); - return; + if (memcmp(state->bad_code, INCORRECT_BROADCAST_CODE, + BT_AUDIO_BROADCAST_CODE_SIZE) != 0) { + FAIL("Bad code is not what we sent"); + return; + } } for (uint8_t i = 0; i < state->num_subgroups; i++) {