mynewt-nimble
mynewt-nimble copied to clipboard
nimble/host: Fix compilation error in ble_store_config.c
This should fix compilation error when -O2 optimization is enabled. GCC incorrectly detects problem. This change adds asserts that convinces GCC that pre-condition will not result in accessing memory out-of-bounds.
This also changes one condition that also contributes to make GCC convinced that pre-condition are met.
Error: In function 'ble_store_config_delete_obj', inlined from 'ble_store_config_delete_cccd' at repos/apache-mynewt-nimble/nimble/host/store/config/src/ble_store_config.c:380:10, inlined from 'ble_store_config_delete' at repos/apache-mynewt-nimble/nimble/host/store/config/src/ble_store_config.c:542:14: repos/apache-mynewt-nimble/nimble/host/store/config/src/ble_store_config.c:193:9: error: 'memmove' offset [16, 31] is out of the bounds [0, 16] of object 'ble_store_config_cccds' with type 'struct ble_store_value_cccd[1]' [-Werror=array-bounds] 193 | memmove(dst, src, move_count * value_size); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ repos/apache-mynewt-nimble/nimble/host/store/config/src/ble_store_config.c: In function 'ble_store_config_delete': repos/apache-mynewt-nimble/nimble/host/store/config/src/ble_store_config.c:45:5: note: 'ble_store_config_cccds' declared here 45 | ble_store_config_cccds[MYNEWT_VAL(BLE_STORE_MAX_CCCDS)];
This should solve problem that #1693 tries to solve