Bluetooth: Host: Add adv == NULL checks in adv.c
Added null checks for adv pointer in the extended and periodic advertising functions. Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
This commit is contained in:
parent
444e59e478
commit
56e7b7708e
@ -11,6 +11,7 @@
|
||||
#include <zephyr/bluetooth/bluetooth.h>
|
||||
#include <zephyr/bluetooth/hci.h>
|
||||
#include <zephyr/bluetooth/buf.h>
|
||||
#include <zephyr/sys/check.h>
|
||||
|
||||
#include "addr_internal.h"
|
||||
#include "hci_core.h"
|
||||
@ -1566,6 +1567,12 @@ int bt_le_ext_adv_create(const struct bt_le_adv_param *param,
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
CHECKIF(out_adv == NULL) {
|
||||
LOG_DBG("out_adv is NULL");
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!valid_adv_ext_param(param)) {
|
||||
return -EINVAL;
|
||||
}
|
||||
@ -1591,6 +1598,12 @@ int bt_le_ext_adv_create(const struct bt_le_adv_param *param,
|
||||
int bt_le_ext_adv_update_param(struct bt_le_ext_adv *adv,
|
||||
const struct bt_le_adv_param *param)
|
||||
{
|
||||
CHECKIF(adv == NULL) {
|
||||
LOG_DBG("adv is NULL");
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!valid_adv_ext_param(param)) {
|
||||
return -EINVAL;
|
||||
}
|
||||
@ -1625,6 +1638,12 @@ int bt_le_ext_adv_start(struct bt_le_ext_adv *adv,
|
||||
struct bt_conn *conn = NULL;
|
||||
int err;
|
||||
|
||||
CHECKIF(adv == NULL) {
|
||||
LOG_DBG("adv is NULL");
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (atomic_test_bit(adv->flags, BT_ADV_ENABLED)) {
|
||||
return -EALREADY;
|
||||
}
|
||||
@ -1682,6 +1701,12 @@ int bt_le_ext_adv_start(struct bt_le_ext_adv *adv,
|
||||
|
||||
int bt_le_ext_adv_stop(struct bt_le_ext_adv *adv)
|
||||
{
|
||||
CHECKIF(adv == NULL) {
|
||||
LOG_DBG("adv is NULL");
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
(void)bt_le_lim_adv_cancel_timeout(adv);
|
||||
|
||||
atomic_clear_bit(adv->flags, BT_ADV_PERSIST);
|
||||
@ -1712,6 +1737,12 @@ int bt_le_ext_adv_set_data(struct bt_le_ext_adv *adv,
|
||||
{
|
||||
bool ext_adv, scannable;
|
||||
|
||||
CHECKIF(adv == NULL) {
|
||||
LOG_DBG("adv is NULL");
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ext_adv = atomic_test_bit(adv->flags, BT_ADV_EXT_ADV);
|
||||
scannable = atomic_test_bit(adv->flags, BT_ADV_SCANNABLE);
|
||||
|
||||
@ -1736,6 +1767,12 @@ int bt_le_ext_adv_delete(struct bt_le_ext_adv *adv)
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
CHECKIF(adv == NULL) {
|
||||
LOG_DBG("adv is NULL");
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Advertising set should be stopped first */
|
||||
if (atomic_test_bit(adv->flags, BT_ADV_ENABLED)) {
|
||||
return -EINVAL;
|
||||
@ -1815,6 +1852,12 @@ int bt_le_per_adv_set_param(struct bt_le_ext_adv *adv,
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
CHECKIF(adv == NULL) {
|
||||
LOG_DBG("adv is NULL");
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (atomic_test_bit(adv->flags, BT_ADV_SCANNABLE)) {
|
||||
return -EINVAL;
|
||||
} else if (atomic_test_bit(adv->flags, BT_ADV_CONNECTABLE)) {
|
||||
@ -1887,6 +1930,12 @@ int bt_le_per_adv_set_data(const struct bt_le_ext_adv *adv,
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
CHECKIF(adv == NULL) {
|
||||
LOG_DBG("adv is NULL");
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!atomic_test_bit(adv->flags, BT_PER_ADV_PARAMS_SET)) {
|
||||
return -EINVAL;
|
||||
}
|
||||
@ -1922,6 +1971,12 @@ int bt_le_per_adv_set_subevent_data(const struct bt_le_ext_adv *adv, uint8_t num
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
CHECKIF(adv == NULL) {
|
||||
LOG_DBG("adv is NULL");
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < num_subevents; i++) {
|
||||
cmd_length += sizeof(struct bt_hci_cp_le_set_pawr_subevent_data_element);
|
||||
cmd_length += params[i].data->len;
|
||||
@ -1963,6 +2018,12 @@ static int bt_le_per_adv_enable(struct bt_le_ext_adv *adv, bool enable)
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
CHECKIF(adv == NULL) {
|
||||
LOG_DBG("adv is NULL");
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* TODO: We could setup some default ext adv params if not already set*/
|
||||
if (!atomic_test_bit(adv->flags, BT_PER_ADV_PARAMS_SET)) {
|
||||
return -EINVAL;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user