Commit Graph

1762 Commits

Author SHA1 Message Date
Emil Gydesen
abb97f57dd Bluetooth: GATT: Extend GATT notify/indicate security check with auth
Add authentication check to the security checks for
GATT notify and indicate.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-27 13:30:44 -04:00
Emil Gydesen
2f4ee7dcb6 Bluetooth: GATT: Verify security when notifiying or indicating
Adds a security checks when notifying or indicating, such
that we don't send notifications for characteristics that
require encryption on an unencrypted link.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-27 13:30:44 -04:00
Emil Gydesen
2bada95482 Bluetooth: Host: Adds periodic advertising min/max interval macros
Add the BT_GAP_PER_ADV_MIN_INTERVAL and BT_GAP_PER_ADV_MAX_INTERVAL
macros in gap.h that are also reference in bluetooth.h and
used for parameter validation in adv.c.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-23 15:01:32 +02:00
Joakim Andersson
d1469ecf26 Bluetooth: host: Fix undefined reference to bt_le_adv_lookup_legacy
Fix undefined referenc to bt_le_adv_lookup_legacy in bt_le_oob_get_local
when bt_le_oob_get_local is used in a central only application.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-04-23 15:30:40 +03:00
Emil Gydesen
59f3e2c502 Bluetooth: host: Fix typo in PA defines and missing min check
Fixes a typo where the BT_GAP_PER_ADV macros had MAX twice,
as well as adding a MIN timeout macro and check.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-21 20:41:17 -04:00
Joakim Andersson
15dfec4df6 Bluetooth: host: Fix ECC thread stack size too small
Fix ECC thread stack size which is to small to account for the worst
case scenario. When an interrupt happens at the point where the ECC
thread is at the highest stack size usage pushing the thread context
to service the ISR causes a stack overflow.

Increase the ECC thread stack size by atleast the size of the basic
stack frame of 32 bytes aligned on 8 byte for ARM architectures.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-04-21 16:57:14 +03:00
Luiz Augusto von Dentz
33d95894e1 Bluetooth: Align error handling of send functions
This aligns the error handling of send function to never unref the
buffer in place so the caller retain the ownership of the buffer
whenever there is an error.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-04-20 18:20:04 -04:00
Jamie McCrae
840d1d9381 bluetooth: Add flag to force device name to appear in AD data
This adds a new flag, BT_LE_ADV_OPT_FORCE_NAME_IN_AD, which can be used
to force the Bluetooth GAP device name to appear in the advertising
data rather than the scan response data of an advert with scan response
data.

Signed-off-by: Jamie McCrae <jamie.mccrae@lairdconnect.com>
2021-04-20 18:19:30 -04:00
Jonathan Rico
545938ea55 Bluetooth: host: Accept keypress notifications as responder
Ignore peer keypress notifications as a responder, allowing the pairing
procedure to continue instead of being aborted.

The Bluetooth LE specification does not specify a behavior, the
implementation has the choice of ignoring or aborting.

Signed-off-by: Jonathan Rico <jonathan.rico@nordicsemi.no>
2021-04-16 15:34:06 -04:00
Marek Pieta
cc21ff5a8c Bluetooth: GATT: Fix undefined symbols
Change fixes build issues for configurations without Bluetooth.

Signed-off-by: Marek Pieta <Marek.Pieta@nordicsemi.no>
2021-04-14 18:19:42 +02:00
Asger Munk Nielsen
b9b1c7e19b Bluetooth: controller: ISO adaptation layer, Rx unframed
First design towards ISO adaptation layer, this PR introduces
data-structures and framework for Rx unframed PDUs (BT RX ingress).
Two callbacks are defined for the SDU production (BT RX egress), one for
SDU allocation as well as a callback for emitting a reassembled SDU.

Signed-off-by: Asger Munk Nielsen <asmk@oticon.com>
2021-04-14 18:17:09 +02:00
Luiz Augusto von Dentz
6017506bcc Bluetooth: ATT: Add documentation for chan_send
chan_send does restore buffer state in case of an error which is
different than how bt_l2cap_send_cb works as it does always unref in
case of an error.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-04-13 16:21:25 -04:00
Luiz Augusto von Dentz
9d2d1a208a Bluetooth: ATT: Fix crash if bt_l2cap_send_cb fails
This fixes a regression introduced by
10841b9a14 as it did remove a call to
net_buf_ref which was used not only to keep a reference for resending
but also to prevent bt_l2cap_send_cb to unref the buffer in case it
fails.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-04-13 16:21:25 -04:00
Michał Narajowski
f62a40beb6 Bluetooth: Fix callback handling in ECC Public Key generation
Commit d6c34c4644 changed the behavior
slightly but didn't update the documentation. The callback will now be
reset to NULL once the key is generated. Calling bt_pub_key_gen()
multiple times before the key is finished would result in creation of an
infinite loop. This could happen when an application calls mesh_init()
and mesh_reset() in quick succession. Clarify the behavior of the API in
the documentation.

Also passing a NULL argument would result in an undefined behavior, so
add a check to match the behavior described in documentation.

Signed-off-by: Michał Narajowski <michal.narajowski@codecoup.pl>
2021-04-09 13:27:24 +02:00
Emil Gydesen
83396d91e2 Bluetooth: ISO: Fix segmentation fault for disconnecting BIS
The bt_iso_chan_disconnected assumes a CIS, but was
also used for BIS, so whenever it was called it attempted
to get a non-existing ACL connection.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-08 16:35:27 +02:00
Emil Gydesen
477dab13b3 Bluetooth: ISO: Update check for invalid num_bis for BIS events
Updates the check to only log the error if the issue was with
the num_bis and not the status.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-07 23:23:34 +02:00
Emil Gydesen
c479aa8211 Bluetooth: ISO: Add missinng disconnect reason to big_disconnect
A few calls to big_disconnect was missing the disconnect reason
due to a bad rebase.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-07 23:23:34 +02:00
Emil Gydesen
026da2df03 Bluetooth: host: Add ISO disconnect reason
Adds a disconnect reason in the ISO disconnect callback.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-07 14:16:54 +02:00
Emil Gydesen
62ba4f325c Bluetooth: host: Fixed bt_le_per_adv_sync interval unit decription
Changed from 1.25MS to 1.25 ms to be consistent with other
unit decriptions.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-07 14:16:46 +02:00
Emil Gydesen
5a1afaa47a Bluetooth: host: Add functions for periodic adv sync objects
Adds two functions:
1) Lookup periodic adv sync object by address
2) Get information about a periodic adv sync object.

These can be useful for the application verify if there is already an
existing sync to an periodic advertiser.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-07 14:16:46 +02:00
Joakim Andersson
9f7061a83d Bluetooth: host: Add discovery of standard descriptor values
Add discovery of standard descriptor values. This provides a shorthand
instead of doing a read by UUID, allowing the application discovery
procedure to re-use the discover parameters for simple descriptors.

Fixes: #21489

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-04-06 10:50:18 -04:00
Emil Gydesen
b86f7addae Bluetooth: SMP: Adds Kconfig for minimum encryption key size
Adds a Kconfig option to set the minimum key size accepted
by this device. This can be used to e.g. enforce 128-bit keys.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-02 16:46:18 +03:00
Joakim Andersson
d9a89fb40b Bluetooth: host: Fix packet reording in ATT under high load
Fix packet reordering in ATT when putting the host under high load.
In certain conditions a packet can be transmitted while there is
elements in the TX queue in bt_att_send. This means that the packet will
skip ahead in the TX queue leading to packet re-ordering.

Fix by always appending to the queue, and then initiate sending of the
HEAD of the queue.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-04-01 13:07:47 +03:00
Joakim Andersson
b6323abaad Bluetooth: host: Fix missing big_disconnect when invalid number of BIS
Fix missing big_disconnect in hci_le_big_complete when the number of
BIS in the event is invalid.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-03-30 08:17:22 -04:00
Joakim Andersson
f4477df803 Bluetooth: host: Validate big_handle before using it as an array index
Validate the big_handle before received from the controller before
using it as an array into the bigs array.

Discover by coverity: Insecure data handling  (TAINTED_SCALAR)
  Using tainted variable "big_handle" as an index into an array "bigs".

Cleanup state of BIG in pending or syncing state if it exists.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-03-30 08:17:22 -04:00
Joakim Andersson
c9aa26efe2 Bluetooth: host: Fix parsing BIG handle as a two byte field
Fix parsing BIG handle which is just one octet as a two octet field,
which could have caused problems on big-endian systems.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-03-30 08:17:22 -04:00
Joakim Andersson
1f1c6c097e Bluetooth: host: Refactor BIG initialized handling to use bit flags
Refactor the BIG initialized atomic handling to use bits instead of a
single atomic.
This allows for more bit flags to be added.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-03-30 08:17:22 -04:00
Morten Priess
a95ca4f3b7 Bluetooth: host: Reject CIS request if hci_le_accept_cis fails
Act on returned error code from hci_le_accept_cis, and reject CIS
request if failed.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2021-03-27 08:57:03 -04:00
Jun Huang
03eb3778e0 Bluetooth: Host: Add a configuration for writable name
In the file gatt.c, GAP service contains the Device Name
characteristic. If writable, authentication and authorization may
be defined by a higher layer specification.It means that GATT
clients can write to device name GAP characteristic without
bonding. So we add a configuration for writable name without
bonding.

Signed-off-by: Jun Huang <huangjun6@xiaomi.com>
Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-03-26 15:31:29 -04:00
Krzysztof Kopyściński
4c8605b003 bluetooth/smp: reject pairing in SC Only mode if insufficient keysize
This is required for GAP/SEC/SEM/BI-09-C and GAP/SEC/SEM/BI-10-C to pass
signed-off-by: Krzysztof Kopyściński <krzysztof.kopyscinski@codecoup.pl>
2021-03-26 15:30:25 -04:00
Emil Gydesen
83599467ce Bluetooth: host: Add feature check for periodic adv functions
Adds a check for the BT_LE_FEAT_BIT_PER_ADV bit for each
function related to periodic advertising, including sync and
PAST transfer.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-03-26 15:28:09 -04:00
Flavio Ceolin
9fd4ea91b7 coccinelle: Remove extra semicolon
coccicheck --mode=patch --cocci=semicolon.cocci

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-03-25 11:35:30 -05:00
Joakim Andersson
eafc6c067f Bluetooth: host: Fix BT_LOG_SNIFFER_INFO option without BT_SMP enabled
Fix undefined reference to bt_key_foreach when BT_LOG_SNIFFER_INFO has
been enabled but BT_SMP is not enabled.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-03-25 07:23:52 -04:00
Luiz Augusto von Dentz
2a42ebc743 Bluetooth: ISO: Add function to access bt_conn_iso
This adds bt_conn_iso function to safely access the struct bt_conn_iso
within a bt_conn.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Luiz Augusto von Dentz
9d0fb5ec47 Bluetooth: ISO: Remove channel direction
Channel direction was actually a source of confusion since the spec does
actually define the data path direction from controller point of view
meaning input actually means transmit and output receive, also direction
can be configured with different QoS settings.

To make these APIs less confusing and allow QoS to be configured
independently they are now split into RX (receiving) and TX
(transmission) settings including its data path.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Luiz Augusto von Dentz
0eb4bfee3f Bluetooth: ISO: Fix not unbind if ACL has been disconnected
If ACL has been disconnected any ISO handle shall be considered invalid
as well.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Luiz Augusto von Dentz
b5a46db6c6 Bluetooth: ISO: Use CHECKIF instead of __ASSERT_NO_MSG
CHECKIF is preferred as it handles full runtime error handling in
addition to just asserts.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Luiz Augusto von Dentz
af0fc963d8 Bluetooth: ISO: Fix cleanup connection
This fixes bt_iso_cleanup when there are still channels bound to the
ACL connection.

On top of it introduce bt_iso_chan_unbind which can be used to unbind
channels and thus release the reference to the ACL connection if that
has not been disconnected in which case the channels are unbind
automatically.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Luiz Augusto von Dentz
7ffbd55ecf Bluetooth: ISO: Fix revert direction when setting SDU
s_sdu refers to rx/input and m_sdu refers to tx/output.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Luiz Augusto von Dentz
151e93b78d Bluetooth: ISO: Fix not calling channel disconnected
When the channel has just been bound but is not connected yet there is
no need to send any command over the air but the disconnected callback
shall still be called in order to notify the channel owner that it has
reached disconnected state.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Luiz Augusto von Dentz
84811d5726 Bluetooth: conn: Fix invalid state transition
When initiating a disconnection conn_disconnect would be called to send
HCI_Disconnect but the controller may be quick enough to send Disconnect
Complete event before setting BT_CONN_DISCONNECT which will then cause
the invalid transition from BT_CONN_DISCONNECTED to BT_CONN_DISCONNECT
and the connection won't be freed properly.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Luiz Augusto von Dentz
a0d6f30895 Bluetooth: conn: Fix unbalance reference when an ISO has been connected
This fixes a regression introduced by 4350021f09 which prevents
references to be properly release when there is an ISO connection.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Rubin Gerritsen
2affd52339 bluetooth: host: EAGAIN when initiating a connection when scanning
Also improve the documentation.

Signed-off-by: Rubin Gerritsen <rubin.gerritsen@nordicsemi.no>
2021-03-17 15:33:43 -04:00
Joakim Andersson
2013ce41e6 Bluetooth: host: Fix undefined references to adv in central only builds
Fix regression is central only builds when CONFIG_BT_PRIVACY and/or
CONFIG_BT_EXT_ADV is enabled, or the functions bt_id_reset or
bt_id_delete is called from application.

This resulted in build error for undefined functions
bt_le_ext_adv_foreach and bt_le_adv_lookup_legacy since the definition
for these functions are now only compiled in when CONFIG_BT_BROADCASTER
has been enabled.

Regression from:
53cea4719d

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-03-17 18:58:49 +02:00
Joakim Andersson
101b96a0b9 Bluetooth: HCI: Fix option CONFIG_BT_HCI_ACL_DATA_SIZE default to 0
Fix CONFIG_BT_HCI_ACL_DATA_SIZE default value set to 0 when data length
feature in the controller is not enabled. In this case the default value
will be set to 0 which is outside of the range specified for the option.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-03-17 17:09:19 +02:00
Wolfgang Puffitsch
ede34fb0e2 Bluetooth: host: Add missing include in id.c
Add hci_driver.h to include files in id.c to ensure that prototype for
bt_read_static_addr is visible. This fixes builds that define
CONFIG_BT_CTLR but not CONFIG_BT_HCI_VS_EXT.

Signed-off-by: Wolfgang Puffitsch <wopu@demant.com>
2021-03-17 08:43:26 -05:00
Luiz Augusto von Dentz
06e18c6df5 Bluetooth: L2CAP: Fix not including all DCIDs
The order of Destination CIDs shall correspond the order of Source CIDs
including its amount so errors that don't result in all connection being
refused shall not break the order of CIDs.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-17 11:29:27 +01:00
Luiz Augusto von Dentz
168389cccd Bluetooth: L2CAP: Fix invalid BT_L2CAP_ECRED_CONN_RSP
For errors that means all connections have been refused there is no need
to add dcids since none will be valid.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-17 11:29:27 +01:00
Luiz Augusto von Dentz
39a3dee29d Bluetooth: L2CAP: Fix not checking for L2CAP_ECRED_CHAN_MAX
When receiving L2CAP_CREDIT_BASED_CONNECTION_REQ the remote may request
more channels than allowed so this checks if amount of channel surpasses
the maximum channels (5) and return an error.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-17 11:29:27 +01:00
Joakim Andersson
32afda01d1 Bluetooth: host: Fix style warnings in existing code
Fix style warnings in existing code.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-03-15 16:51:51 +02:00