Re: [PATCH BlueZ] mesh: Use valid net key index when handling Send call

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Applied
On Thu, 2020-08-20 at 22:48 -0700, Inga Stotland wrote:
> Retrieve value of bound Net Key index based on the value of
> passed AppKey index. Check if the key is present and fail early
> in case of error. Also, pass the correct NetKey index to model
> layer in mesh_model_send(), instead of hard coded 0.
> ---
>  mesh/model.c |  2 --
>  mesh/node.c  | 13 +++++++++----
>  2 files changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/mesh/model.c b/mesh/model.c
> index eb5142503..7e1c4ab92 100644
> --- a/mesh/model.c
> +++ b/mesh/model.c
> @@ -547,8 +547,6 @@ static bool msg_send(struct mesh_node *node, bool cred, uint16_t src,
>  			l_debug("no app key for (%x)", app_idx);
>  			return false;
>  		}
> -
> -		net_idx = appkey_net_idx(node_get_net(node), app_idx);
>  	}
>  
>  	out = l_malloc(out_len);
> diff --git a/mesh/node.c b/mesh/node.c
> index 1eeffeb8b..ed3d959c5 100644
> --- a/mesh/node.c
> +++ b/mesh/node.c
> @@ -1761,7 +1761,7 @@ static struct l_dbus_message *send_call(struct l_dbus *dbus,
>  	const char *sender, *ele_path;
>  	struct l_dbus_message_iter iter_data;
>  	struct node_element *ele;
> -	uint16_t dst, app_idx, src;
> +	uint16_t dst, app_idx, net_idx, src;
>  	uint8_t *data;
>  	uint32_t len;
>  
> @@ -1790,10 +1790,15 @@ static struct l_dbus_message *send_call(struct l_dbus *dbus,
>  
>  	if (app_idx & ~APP_IDX_MASK)
>  		return dbus_error(msg, MESH_ERROR_INVALID_ARGS,
> -						"Invalid key_index");
> +						"Invalid key index");
> +
> +	net_idx = appkey_net_idx(node_get_net(node), app_idx);
> +	if (net_idx == NET_IDX_INVALID)
> +		return dbus_error(msg, MESH_ERROR_INVALID_ARGS,
> +							"Key not found");
>  
> -	if (!mesh_model_send(node, src, dst, app_idx, 0, DEFAULT_TTL, false,
> -								data, len))
> +	if (!mesh_model_send(node, src, dst, app_idx, net_idx, DEFAULT_TTL,
> +							false, data, len))
>  		return dbus_error(msg, MESH_ERROR_FAILED, NULL);
>  
>  	return l_dbus_message_new_method_return(msg);




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux