Skip to content

Commit

Permalink
ble_mesh: stack: Fix provisioning input or output count number should…
Browse files Browse the repository at this point in the history
… be at least 1

Closes #6863
  • Loading branch information
JiaLWang committed May 8, 2021
1 parent d497011 commit 6826f9d
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
13 changes: 12 additions & 1 deletion components/bt/esp_ble_mesh/mesh_core/prov.c
Original file line number Diff line number Diff line change
Expand Up @@ -751,7 +751,18 @@ static int prov_auth(uint8_t method, uint8_t action, uint8_t size)
uint32_t num = 0U;

bt_mesh_rand(&num, sizeof(num));
num %= div[size - 1];

if (output == BLE_MESH_BLINK ||
output == BLE_MESH_BEEP ||
output == BLE_MESH_VIBRATE) {
/** NOTE: According to the Bluetooth Mesh Profile Specification
* Section 5.4.2.4, blink, beep and vibrate should be a random
* integer between 0 and 10^size.
*/
num = (num % (div[size - 1] - 1)) + 1;
} else {
num %= div[size - 1];
}

sys_put_be32(num, &link.auth[12]);
(void)memset(link.auth, 0, 12);
Expand Down
12 changes: 11 additions & 1 deletion components/bt/esp_ble_mesh/mesh_core/provisioner_prov.c
Original file line number Diff line number Diff line change
Expand Up @@ -1954,7 +1954,17 @@ static int prov_auth(const uint8_t idx, uint8_t method, uint8_t action, uint8_t
uint32_t num = 0U;

bt_mesh_rand(&num, sizeof(num));
num %= div[size - 1];

if (input == BLE_MESH_PUSH ||
input == BLE_MESH_TWIST) {
/** NOTE: According to the Bluetooth Mesh Profile Specification
* Section 5.4.2.4, push and twist should be a random integer
* between 0 and 10^size.
*/
num = (num % (div[size - 1] - 1)) + 1;
} else {
num %= div[size - 1];
}

sys_put_be32(num, &link[idx].auth[12]);
memset(link[idx].auth, 0, 12);
Expand Down

0 comments on commit 6826f9d

Please sign in to comment.