2019-06-12 06:50:05

by Stotland, Inga

[permalink] [raw]
Subject: [PATCH BlueZ 1/1] mesh: Remove redundant checks when adding a net key

This patch cleans up redundant checks in sdd_key() and mesh_net_set_key():
no need to check the result of l_queue_push_tail() and not need to check
if subnet is valid after it was successfully created.
---
mesh/net.c | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/mesh/net.c b/mesh/net.c
index fdd38e7ce..a597b8794 100644
--- a/mesh/net.c
+++ b/mesh/net.c
@@ -992,12 +992,13 @@ static struct mesh_subnet *add_key(struct mesh_net *net, uint16_t idx,
return NULL;
}

- if (!create_secure_beacon(net, subnet, subnet->snb.beacon + 1) ||
- !l_queue_push_tail(net->subnets, subnet)) {
+ if (!create_secure_beacon(net, subnet, subnet->snb.beacon + 1)) {
subnet_free(subnet);
return NULL;
}

+ l_queue_push_tail(net->subnets, subnet);
+
return subnet;
}

@@ -3018,11 +3019,6 @@ bool mesh_net_set_key(struct mesh_net *net, uint16_t idx, const uint8_t *key,
{
struct mesh_subnet *subnet;

- subnet = l_queue_find(net->subnets, match_key_index,
- L_UINT_TO_PTR(idx));
- if (subnet)
- return false;
-
/* Current key must be always present */
if (!key)
return false;
@@ -3031,12 +3027,13 @@ bool mesh_net_set_key(struct mesh_net *net, uint16_t idx, const uint8_t *key,
if (phase != KEY_REFRESH_PHASE_NONE && !new_key)
return false;

- subnet = add_key(net, idx, key);
- if (!subnet)
- return false;
-
+ /* Check if the subnet with the specified index already exists */
subnet = l_queue_find(net->subnets, match_key_index,
L_UINT_TO_PTR(idx));
+ if (subnet)
+ return false;
+
+ subnet = add_key(net, idx, key);
if (!subnet)
return false;

--
2.21.0


2019-06-13 17:16:52

by Gix, Brian

[permalink] [raw]
Subject: Re: [PATCH BlueZ 1/1] mesh: Remove redundant checks when adding a net key

Applied with minor commit message tweeks

On Tue, 2019-06-11 at 16:16 -0700, Inga Stotland wrote:
> This patch cleans up redundant checks in sdd_key() and mesh_net_set_key():
> no need to check the result of l_queue_push_tail() and not need to check
> if subnet is valid after it was successfully created.
> ---
> mesh/net.c | 19 ++++++++-----------
> 1 file changed, 8 insertions(+), 11 deletions(-)
>
> diff --git a/mesh/net.c b/mesh/net.c
> index fdd38e7ce..a597b8794 100644
> --- a/mesh/net.c
> +++ b/mesh/net.c
> @@ -992,12 +992,13 @@ static struct mesh_subnet *add_key(struct mesh_net *net, uint16_t idx,
> return NULL;
> }
>
> - if (!create_secure_beacon(net, subnet, subnet->snb.beacon + 1) ||
> - !l_queue_push_tail(net->subnets, subnet)) {
> + if (!create_secure_beacon(net, subnet, subnet->snb.beacon + 1)) {
> subnet_free(subnet);
> return NULL;
> }
>
> + l_queue_push_tail(net->subnets, subnet);
> +
> return subnet;
> }
>
> @@ -3018,11 +3019,6 @@ bool mesh_net_set_key(struct mesh_net *net, uint16_t idx, const uint8_t *key,
> {
> struct mesh_subnet *subnet;
>
> - subnet = l_queue_find(net->subnets, match_key_index,
> - L_UINT_TO_PTR(idx));
> - if (subnet)
> - return false;
> -
> /* Current key must be always present */
> if (!key)
> return false;
> @@ -3031,12 +3027,13 @@ bool mesh_net_set_key(struct mesh_net *net, uint16_t idx, const uint8_t *key,
> if (phase != KEY_REFRESH_PHASE_NONE && !new_key)
> return false;
>
> - subnet = add_key(net, idx, key);
> - if (!subnet)
> - return false;
> -
> + /* Check if the subnet with the specified index already exists */
> subnet = l_queue_find(net->subnets, match_key_index,
> L_UINT_TO_PTR(idx));
> + if (subnet)
> + return false;
> +
> + subnet = add_key(net, idx, key);
> if (!subnet)
> return false;
>