ble_mesh: Add more checks of net_idx & app_idx
This commit is contained in:
parent
268f5ad6c6
commit
1ac6d48fcf
7 changed files with 63 additions and 21 deletions
|
@ -179,9 +179,12 @@ esp_err_t esp_ble_mesh_server_model_send_msg(esp_ble_mesh_model_t *model,
|
||||||
esp_ble_mesh_msg_ctx_t *ctx, uint32_t opcode,
|
esp_ble_mesh_msg_ctx_t *ctx, uint32_t opcode,
|
||||||
uint16_t length, uint8_t *data)
|
uint16_t length, uint8_t *data)
|
||||||
{
|
{
|
||||||
if (!model || !ctx) {
|
if (model == NULL || ctx == NULL ||
|
||||||
|
ctx->net_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
ctx->app_idx == ESP_BLE_MESH_KEY_UNUSED) {
|
||||||
return ESP_ERR_INVALID_ARG;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ble_mesh_model_send_msg(model, ctx, opcode, BTC_BLE_MESH_ACT_SERVER_MODEL_SEND,
|
return ble_mesh_model_send_msg(model, ctx, opcode, BTC_BLE_MESH_ACT_SERVER_MODEL_SEND,
|
||||||
length, data, 0, false, ROLE_NODE);
|
length, data, 0, false, ROLE_NODE);
|
||||||
}
|
}
|
||||||
|
@ -191,9 +194,12 @@ esp_err_t esp_ble_mesh_client_model_send_msg(esp_ble_mesh_model_t *model,
|
||||||
uint16_t length, uint8_t *data, int32_t msg_timeout,
|
uint16_t length, uint8_t *data, int32_t msg_timeout,
|
||||||
bool need_rsp, esp_ble_mesh_dev_role_t device_role)
|
bool need_rsp, esp_ble_mesh_dev_role_t device_role)
|
||||||
{
|
{
|
||||||
if (!model || !ctx) {
|
if (model == NULL || ctx == NULL ||
|
||||||
|
ctx->net_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
ctx->app_idx == ESP_BLE_MESH_KEY_UNUSED) {
|
||||||
return ESP_ERR_INVALID_ARG;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ble_mesh_model_send_msg(model, ctx, opcode, BTC_BLE_MESH_ACT_CLIENT_MODEL_SEND,
|
return ble_mesh_model_send_msg(model, ctx, opcode, BTC_BLE_MESH_ACT_CLIENT_MODEL_SEND,
|
||||||
length, data, msg_timeout, need_rsp, device_role);
|
length, data, msg_timeout, need_rsp, device_role);
|
||||||
}
|
}
|
||||||
|
@ -202,9 +208,11 @@ esp_err_t esp_ble_mesh_model_publish(esp_ble_mesh_model_t *model, uint32_t opcod
|
||||||
uint16_t length, uint8_t *data,
|
uint16_t length, uint8_t *data,
|
||||||
esp_ble_mesh_dev_role_t device_role)
|
esp_ble_mesh_dev_role_t device_role)
|
||||||
{
|
{
|
||||||
if (!model || !model->pub || !model->pub->msg) {
|
if (model == NULL || model->pub == NULL || model->pub->msg == NULL ||
|
||||||
|
model->pub->publish_addr == ESP_BLE_MESH_ADDR_UNASSIGNED) {
|
||||||
return ESP_ERR_INVALID_ARG;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ble_mesh_model_send_msg(model, NULL, opcode, BTC_BLE_MESH_ACT_MODEL_PUBLISH,
|
return ble_mesh_model_send_msg(model, NULL, opcode, BTC_BLE_MESH_ACT_MODEL_PUBLISH,
|
||||||
length, data, 0, false, device_role);
|
length, data, 0, false, device_role);
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,8 +58,10 @@ esp_err_t esp_ble_mesh_config_client_get_state(esp_ble_mesh_client_common_param_
|
||||||
btc_ble_mesh_config_client_args_t arg = {0};
|
btc_ble_mesh_config_client_args_t arg = {0};
|
||||||
btc_msg_t msg = {0};
|
btc_msg_t msg = {0};
|
||||||
|
|
||||||
if (!params || !params->model || !ESP_BLE_MESH_ADDR_IS_UNICAST(params->ctx.addr) ||
|
if (params == NULL || params->model == NULL ||
|
||||||
(config_client_get_need_param(params->opcode) && !get_state)) {
|
params->ctx.net_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
!ESP_BLE_MESH_ADDR_IS_UNICAST(params->ctx.addr) ||
|
||||||
|
(config_client_get_need_param(params->opcode) && get_state == NULL)) {
|
||||||
return ESP_ERR_INVALID_ARG;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,8 +83,10 @@ esp_err_t esp_ble_mesh_config_client_set_state(esp_ble_mesh_client_common_param_
|
||||||
btc_ble_mesh_config_client_args_t arg = {0};
|
btc_ble_mesh_config_client_args_t arg = {0};
|
||||||
btc_msg_t msg = {0};
|
btc_msg_t msg = {0};
|
||||||
|
|
||||||
if (!params || !params->model || !ESP_BLE_MESH_ADDR_IS_UNICAST(params->ctx.addr) ||
|
if (params == NULL || params->model == NULL ||
|
||||||
(params->opcode != ESP_BLE_MESH_MODEL_OP_NODE_RESET && !set_state)) {
|
params->ctx.net_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
!ESP_BLE_MESH_ADDR_IS_UNICAST(params->ctx.addr) ||
|
||||||
|
(params->opcode != ESP_BLE_MESH_MODEL_OP_NODE_RESET && set_state == NULL)) {
|
||||||
return ESP_ERR_INVALID_ARG;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,8 +45,11 @@ esp_err_t esp_ble_mesh_generic_client_get_state(esp_ble_mesh_client_common_param
|
||||||
btc_ble_mesh_generic_client_args_t arg = {0};
|
btc_ble_mesh_generic_client_args_t arg = {0};
|
||||||
btc_msg_t msg = {0};
|
btc_msg_t msg = {0};
|
||||||
|
|
||||||
if (!params || !params->model || !params->ctx.addr ||
|
if (params == NULL || params->model == NULL ||
|
||||||
(generic_client_get_need_param(params->opcode) && !get_state)) {
|
params->ctx.net_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.app_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.addr == ESP_BLE_MESH_ADDR_UNASSIGNED ||
|
||||||
|
(generic_client_get_need_param(params->opcode) && get_state == NULL)) {
|
||||||
return ESP_ERR_INVALID_ARG;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +71,10 @@ esp_err_t esp_ble_mesh_generic_client_set_state(esp_ble_mesh_client_common_param
|
||||||
btc_ble_mesh_generic_client_args_t arg = {0};
|
btc_ble_mesh_generic_client_args_t arg = {0};
|
||||||
btc_msg_t msg = {0};
|
btc_msg_t msg = {0};
|
||||||
|
|
||||||
if (!params || !params->model || !params->ctx.addr || !set_state) {
|
if (params == NULL || params->model == NULL || set_state == NULL ||
|
||||||
|
params->ctx.net_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.app_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.addr == ESP_BLE_MESH_ADDR_UNASSIGNED) {
|
||||||
return ESP_ERR_INVALID_ARG;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,8 +39,11 @@ esp_err_t esp_ble_mesh_health_client_get_state(esp_ble_mesh_client_common_param_
|
||||||
btc_ble_mesh_health_client_args_t arg = {0};
|
btc_ble_mesh_health_client_args_t arg = {0};
|
||||||
btc_msg_t msg = {0};
|
btc_msg_t msg = {0};
|
||||||
|
|
||||||
if (!params || !params->model || !params->ctx.addr || (!get_state &&
|
if (params == NULL || params->model == NULL ||
|
||||||
params->opcode == ESP_BLE_MESH_MODEL_OP_HEALTH_FAULT_GET)) {
|
params->ctx.net_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.app_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.addr == ESP_BLE_MESH_ADDR_UNASSIGNED ||
|
||||||
|
(params->opcode == ESP_BLE_MESH_MODEL_OP_HEALTH_FAULT_GET && get_state == NULL)) {
|
||||||
return ESP_ERR_INVALID_ARG;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,7 +65,10 @@ esp_err_t esp_ble_mesh_health_client_set_state(esp_ble_mesh_client_common_param_
|
||||||
btc_ble_mesh_health_client_args_t arg = {0};
|
btc_ble_mesh_health_client_args_t arg = {0};
|
||||||
btc_msg_t msg = {0};
|
btc_msg_t msg = {0};
|
||||||
|
|
||||||
if (!params || !params->model || !params->ctx.addr || !set_state) {
|
if (params == NULL || params->model == NULL || set_state == NULL ||
|
||||||
|
params->ctx.net_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.app_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.addr == ESP_BLE_MESH_ADDR_UNASSIGNED) {
|
||||||
return ESP_ERR_INVALID_ARG;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,8 +32,11 @@ esp_err_t esp_ble_mesh_light_client_get_state(esp_ble_mesh_client_common_param_t
|
||||||
btc_ble_mesh_lighting_client_args_t arg = {0};
|
btc_ble_mesh_lighting_client_args_t arg = {0};
|
||||||
btc_msg_t msg = {0};
|
btc_msg_t msg = {0};
|
||||||
|
|
||||||
if (!params || !params->model || !params->ctx.addr || (!get_state &&
|
if (params == NULL || params->model == NULL ||
|
||||||
params->opcode == ESP_BLE_MESH_MODEL_OP_LIGHT_LC_PROPERTY_GET)) {
|
params->ctx.net_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.app_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.addr == ESP_BLE_MESH_ADDR_UNASSIGNED ||
|
||||||
|
(params->opcode == ESP_BLE_MESH_MODEL_OP_LIGHT_LC_PROPERTY_GET && get_state == NULL)) {
|
||||||
return ESP_ERR_INVALID_ARG;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +58,10 @@ esp_err_t esp_ble_mesh_light_client_set_state(esp_ble_mesh_client_common_param_t
|
||||||
btc_ble_mesh_lighting_client_args_t arg = {0};
|
btc_ble_mesh_lighting_client_args_t arg = {0};
|
||||||
btc_msg_t msg = {0};
|
btc_msg_t msg = {0};
|
||||||
|
|
||||||
if (!params || !params->model || !params->ctx.addr || !set_state) {
|
if (params == NULL || params->model == NULL || set_state == NULL ||
|
||||||
|
params->ctx.net_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.app_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.addr == ESP_BLE_MESH_ADDR_UNASSIGNED) {
|
||||||
return ESP_ERR_INVALID_ARG;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,10 @@ esp_err_t esp_ble_mesh_sensor_client_get_state(esp_ble_mesh_client_common_param_
|
||||||
btc_ble_mesh_sensor_client_args_t arg = {0};
|
btc_ble_mesh_sensor_client_args_t arg = {0};
|
||||||
btc_msg_t msg = {0};
|
btc_msg_t msg = {0};
|
||||||
|
|
||||||
if (!params || !params->model || !params->ctx.addr || !get_state) {
|
if (params == NULL || params->model == NULL || get_state == NULL ||
|
||||||
|
params->ctx.net_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.app_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.addr == ESP_BLE_MESH_ADDR_UNASSIGNED) {
|
||||||
return ESP_ERR_INVALID_ARG;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +57,10 @@ esp_err_t esp_ble_mesh_sensor_client_set_state(esp_ble_mesh_client_common_param_
|
||||||
btc_ble_mesh_sensor_client_args_t arg = {0};
|
btc_ble_mesh_sensor_client_args_t arg = {0};
|
||||||
btc_msg_t msg = {0};
|
btc_msg_t msg = {0};
|
||||||
|
|
||||||
if (!params || !params->model || !params->ctx.addr || !set_state) {
|
if (params == NULL || params->model == NULL || set_state == NULL ||
|
||||||
|
params->ctx.net_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.app_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.addr == ESP_BLE_MESH_ADDR_UNASSIGNED) {
|
||||||
return ESP_ERR_INVALID_ARG;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,8 +32,11 @@ esp_err_t esp_ble_mesh_time_scene_client_get_state(esp_ble_mesh_client_common_pa
|
||||||
btc_ble_mesh_time_scene_client_args_t arg = {0};
|
btc_ble_mesh_time_scene_client_args_t arg = {0};
|
||||||
btc_msg_t msg = {0};
|
btc_msg_t msg = {0};
|
||||||
|
|
||||||
if (!params || !params->model || !params->ctx.addr || (!get_state &&
|
if (params == NULL || params->model == NULL ||
|
||||||
params->opcode == ESP_BLE_MESH_MODEL_OP_SCHEDULER_ACT_GET)) {
|
params->ctx.net_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.app_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.addr == ESP_BLE_MESH_ADDR_UNASSIGNED ||
|
||||||
|
(params->opcode == ESP_BLE_MESH_MODEL_OP_SCHEDULER_ACT_GET && get_state == NULL)) {
|
||||||
return ESP_ERR_INVALID_ARG;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +58,10 @@ esp_err_t esp_ble_mesh_time_scene_client_set_state(esp_ble_mesh_client_common_pa
|
||||||
btc_ble_mesh_time_scene_client_args_t arg = {0};
|
btc_ble_mesh_time_scene_client_args_t arg = {0};
|
||||||
btc_msg_t msg = {0};
|
btc_msg_t msg = {0};
|
||||||
|
|
||||||
if (!params || !params->model || !params->ctx.addr || !set_state) {
|
if (params == NULL || params->model == NULL || set_state == NULL ||
|
||||||
|
params->ctx.net_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.app_idx == ESP_BLE_MESH_KEY_UNUSED ||
|
||||||
|
params->ctx.addr == ESP_BLE_MESH_ADDR_UNASSIGNED) {
|
||||||
return ESP_ERR_INVALID_ARG;
|
return ESP_ERR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue