From aafcd4f85171da495d9900cdeafbc7fcd9314865 Mon Sep 17 00:00:00 2001 From: Gudipudi Ramana Kumar Date: Sun, 13 Apr 2025 19:44:50 +0530 Subject: [PATCH] bluetooth: audio: Update bad code in BASS to be v1.0.1 compliant Bad Broadcast Code in BASS/Scan Delegator if BIG_Encryption field value = 0x03 (Bad_Code), Bad_Code shall be set to the value 0xFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF according to BASS v1.0.1 Signed-off-by: Gudipudi Ramana Kumar --- subsys/bluetooth/audio/bap_scan_delegator.c | 6 ++---- .../bsim/bluetooth/audio/src/bap_broadcast_assistant_test.c | 2 +- tests/bsim/bluetooth/audio/src/bap_common.h | 3 +++ 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/subsys/bluetooth/audio/bap_scan_delegator.c b/subsys/bluetooth/audio/bap_scan_delegator.c index e75e667b1bf..0c655f8926a 100644 --- a/subsys/bluetooth/audio/bap_scan_delegator.c +++ b/subsys/bluetooth/audio/bap_scan_delegator.c @@ -1372,8 +1372,7 @@ int bt_bap_scan_delegator_set_bis_sync_state( internal_state->index, src_id); if (internal_state->state.encrypt_state == BT_BAP_BIG_ENC_STATE_BAD_CODE) { - (void)memcpy(internal_state->state.bad_code, - internal_state->broadcast_code, + (void)memset(internal_state->state.bad_code, 0xFF, sizeof(internal_state->state.bad_code)); } @@ -1570,8 +1569,7 @@ int bt_bap_scan_delegator_mod_src(const struct bt_bap_scan_delegator_mod_src_par 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)); + (void)memset(state->bad_code, 0xFF, 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 bb8f44c5b90..719315f9799 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,7 @@ 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); - if (memcmp(state->bad_code, INCORRECT_BROADCAST_CODE, BT_ISO_BROADCAST_CODE_SIZE) != + if (memcmp(state->bad_code, BAD_BROADCAST_CODE, BT_ISO_BROADCAST_CODE_SIZE) != 0) { FAIL("Bad code is not what we sent\n"); return; diff --git a/tests/bsim/bluetooth/audio/src/bap_common.h b/tests/bsim/bluetooth/audio/src/bap_common.h index ccb862be206..fcfcabaad58 100644 --- a/tests/bsim/bluetooth/audio/src/bap_common.h +++ b/tests/bsim/bluetooth/audio/src/bap_common.h @@ -48,6 +48,9 @@ #define INCORRECT_BROADCAST_CODE \ ((uint8_t[]){0xDE, 0xAD, 0xBE, 0xEF, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, \ 0xdd, 0xee, 0xff}) +#define BAD_BROADCAST_CODE \ + ((uint8_t[]){0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF}) #define BAP_RETRY_WAIT K_MSEC(100)