diff --git a/subsys/bluetooth/host/classic/br.c b/subsys/bluetooth/host/classic/br.c index c0d366f2bdc..d1d0f209769 100644 --- a/subsys/bluetooth/host/classic/br.c +++ b/subsys/bluetooth/host/classic/br.c @@ -1254,10 +1254,6 @@ int bt_br_write_local_name(const char *name) struct net_buf *buf; struct bt_hci_write_local_name *name_cp; - if (!atomic_test_bit(bt_dev.flags, BT_DEV_READY)) { - return -EAGAIN; - } - buf = bt_hci_cmd_create(BT_HCI_OP_WRITE_LOCAL_NAME, sizeof(*name_cp)); if (!buf) { return -ENOBUFS; @@ -1265,7 +1261,7 @@ int bt_br_write_local_name(const char *name) name_cp = net_buf_add(buf, sizeof(*name_cp)); memset(name_cp, 0, sizeof(*name_cp)); - memcpy((char *)name_cp->local_name, name, sizeof(name_cp->local_name)); + memcpy((char *)name_cp->local_name, name, strlen(name)); return bt_hci_cmd_send_sync(BT_HCI_OP_WRITE_LOCAL_NAME, buf, NULL); } @@ -1304,6 +1300,7 @@ int bt_br_write_ext_inq_response(uint8_t fec_required) struct bt_hci_cp_write_extended_inquiry_response *cp; size_t name_len, eir_len = 240; uint8_t type; + void *p; if (!BT_FEAT_EIR(bt_dev.features)) { return -ENOTSUP; @@ -1338,7 +1335,8 @@ int bt_br_write_ext_inq_response(uint8_t fec_required) /* TODO: Fill in EIR data (Manufacturer Specific Data) */ /* TODO: Fill in EIR data (TX Power) */ - net_buf_add(buf, eir_len); + p = net_buf_add(buf, eir_len); + memset(p, 0, eir_len); return bt_hci_cmd_send_sync(BT_HCI_OP_WRITE_EXTENDED_INQUIRY_RESPONSE, buf, NULL); } diff --git a/subsys/bluetooth/host/hci_core.c b/subsys/bluetooth/host/hci_core.c index 0a53f201282..88403c57012 100644 --- a/subsys/bluetooth/host/hci_core.c +++ b/subsys/bluetooth/host/hci_core.c @@ -4557,7 +4557,8 @@ int bt_set_name(const char *name) } } - if (IS_ENABLED(CONFIG_BT_CLASSIC)) { + if (IS_ENABLED(CONFIG_BT_CLASSIC) && + atomic_test_bit(bt_dev.flags, BT_DEV_READY)) { err = bt_br_write_local_name(name); if (err) { LOG_WRN("Unable to set BR/EDR name");