This is an automated email from the ASF dual-hosted git repository. janc pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git
commit 8b10972ae8da28d12b4f066a98fe42eec215023b Author: Szymon Janc <[email protected]> AuthorDate: Wed Nov 19 15:22:27 2025 +0100 nimble/hosts/test: Fix test storage utils union ble_store_key requires testing for object type in order to avoid invalid memory access. --- nimble/host/test/src/ble_hs_test_util.c | 54 ++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/nimble/host/test/src/ble_hs_test_util.c b/nimble/host/test/src/ble_hs_test_util.c index f0b26128b..c38eeecd8 100644 --- a/nimble/host/test/src/ble_hs_test_util.c +++ b/nimble/host/test/src/ble_hs_test_util.c @@ -1914,10 +1914,33 @@ ble_hs_test_util_store_read(int obj_type, const union ble_store_key *key, int rc; ble_sm_test_store_obj_type = obj_type; - ble_sm_test_store_key = *key; + + switch (ble_sm_test_store_obj_type) { + case BLE_STORE_OBJ_TYPE_PEER_SEC: + case BLE_STORE_OBJ_TYPE_OUR_SEC: + ble_sm_test_store_key.sec = key->sec; + break; + case BLE_STORE_OBJ_TYPE_CCCD: + ble_sm_test_store_key.cccd = key->cccd; + break; + default: + return BLE_HS_ENOTSUP; + } rc = ble_store_config_read(obj_type, key, value); - ble_sm_test_store_value = *value; + + switch (ble_sm_test_store_obj_type) { + case BLE_STORE_OBJ_TYPE_PEER_SEC: + case BLE_STORE_OBJ_TYPE_OUR_SEC: + ble_sm_test_store_value.sec = value->sec; + break; + case BLE_STORE_OBJ_TYPE_CCCD: + ble_sm_test_store_value.cccd = value->cccd; + break; + default: + rc = BLE_HS_ENOTSUP; + break; + } return rc; } @@ -1930,7 +1953,19 @@ ble_hs_test_util_store_write(int obj_type, const union ble_store_value *value) ble_sm_test_store_obj_type = obj_type; rc = ble_store_config_write(obj_type, value); - ble_sm_test_store_value = *value; + + switch (ble_sm_test_store_obj_type) { + case BLE_STORE_OBJ_TYPE_PEER_SEC: + case BLE_STORE_OBJ_TYPE_OUR_SEC: + ble_sm_test_store_value.sec = value->sec; + break; + case BLE_STORE_OBJ_TYPE_CCCD: + ble_sm_test_store_value.cccd = value->cccd; + break; + default: + rc = BLE_HS_ENOTSUP; + break; + } return rc; } @@ -1941,7 +1976,18 @@ ble_hs_test_util_store_delete(int obj_type, const union ble_store_key *key) int rc; ble_sm_test_store_obj_type = obj_type; - ble_sm_test_store_key = *key; + + switch (ble_sm_test_store_obj_type) { + case BLE_STORE_OBJ_TYPE_PEER_SEC: + case BLE_STORE_OBJ_TYPE_OUR_SEC: + ble_sm_test_store_key.sec = key->sec; + break; + case BLE_STORE_OBJ_TYPE_CCCD: + ble_sm_test_store_key.cccd = key->cccd; + break; + default: + return BLE_HS_ENOTSUP; + } rc = ble_store_config_delete(obj_type, key); return rc;
