diff mbox series

[v1] att: Check security level before setting

Message ID 20241120080447.233393-1-quic_jiaymao@quicinc.com
State New
Headers show
Series [v1] att: Check security level before setting | expand

Commit Message

Jiayang Mao Nov. 20, 2024, 8:04 a.m. UTC
bt_gatt_client_set_security could fail if the security level in
kernel is already BT_ATT_SECURITY_MEDIUM but long term key is not
ready. So, get and check the security level before setting it.

Signed-off-by: Jiayang Mao <quic_jiaymao@quicinc.com>
---
 src/shared/att.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Luiz Augusto von Dentz Nov. 20, 2024, 2:20 p.m. UTC | #1
Hi Jiayang,

On Wed, Nov 20, 2024 at 3:18 AM Jiayang Mao <quic_jiaymao@quicinc.com> wrote:
>
> bt_gatt_client_set_security could fail if the security level in
> kernel is already BT_ATT_SECURITY_MEDIUM but long term key is not
> ready. So, get and check the security level before setting it.

Ive already pushed a similar fix.

> Signed-off-by: Jiayang Mao <quic_jiaymao@quicinc.com>
> ---
>  src/shared/att.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/src/shared/att.c b/src/shared/att.c
> index 4a406f4b9..dabbdb431 100644
> --- a/src/shared/att.c
> +++ b/src/shared/att.c
> @@ -727,6 +727,9 @@ static bool bt_att_chan_set_security(struct bt_att_chan *chan, int level)
>  {
>         struct bt_security sec;
>
> +       if (level == bt_att_chan_get_security(chan))
> +               return true;
> +
>         if (chan->type == BT_ATT_LOCAL) {
>                 chan->sec_level = level;
>                 return true;
> --
> 2.25.1
>
>
Jiayang Mao Nov. 20, 2024, 2:37 p.m. UTC | #2
Hi Luiz,

On 2024/11/20 22:20, Luiz Augusto von Dentz wrote:
> Hi Jiayang,
> 
> On Wed, Nov 20, 2024 at 3:18 AM Jiayang Mao <quic_jiaymao@quicinc.com> wrote:
>>
>> bt_gatt_client_set_security could fail if the security level in
>> kernel is already BT_ATT_SECURITY_MEDIUM but long term key is not
>> ready. So, get and check the security level before setting it.
> 
> Ive already pushed a similar fix.

I just saw your fix. Thank you very much for the update!

> 
>> Signed-off-by: Jiayang Mao <quic_jiaymao@quicinc.com>
>> ---
>>   src/shared/att.c | 3 +++
>>   1 file changed, 3 insertions(+)
>>
>> diff --git a/src/shared/att.c b/src/shared/att.c
>> index 4a406f4b9..dabbdb431 100644
>> --- a/src/shared/att.c
>> +++ b/src/shared/att.c
>> @@ -727,6 +727,9 @@ static bool bt_att_chan_set_security(struct bt_att_chan *chan, int level)
>>   {
>>          struct bt_security sec;
>>
>> +       if (level == bt_att_chan_get_security(chan))
>> +               return true;
>> +
>>          if (chan->type == BT_ATT_LOCAL) {
>>                  chan->sec_level = level;
>>                  return true;
>> --
>> 2.25.1
>>
>>
> 
>
diff mbox series

Patch

diff --git a/src/shared/att.c b/src/shared/att.c
index 4a406f4b9..dabbdb431 100644
--- a/src/shared/att.c
+++ b/src/shared/att.c
@@ -727,6 +727,9 @@  static bool bt_att_chan_set_security(struct bt_att_chan *chan, int level)
 {
 	struct bt_security sec;
 
+	if (level == bt_att_chan_get_security(chan))
+		return true;
+
 	if (chan->type == BT_ATT_LOCAL) {
 		chan->sec_level = level;
 		return true;