All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH BlueZ v2] tools/mesh-cfgclient: Add support for Static OOB key
@ 2020-03-11 22:59 Brian Gix
  2020-03-12 18:19 ` Gix, Brian
  0 siblings, 1 reply; 2+ messages in thread
From: Brian Gix @ 2020-03-11 22:59 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: brian.gix, inga.stotland, testtgsh

This fixes a bug that didn't allow 16 octet Static OOB strings during
provisioning.
---
 tools/mesh-cfgclient.c | 29 +++++++++++++++++++----------
 tools/mesh/agent.c     | 10 ++++++----
 2 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/tools/mesh-cfgclient.c b/tools/mesh-cfgclient.c
index b4d76de93..4b7bd2200 100644
--- a/tools/mesh-cfgclient.c
+++ b/tools/mesh-cfgclient.c
@@ -372,12 +372,11 @@ static void agent_input_done(oob_type_t type, void *buf, uint16_t len,
 	struct l_dbus_message *reply = NULL;
 	struct l_dbus_message_builder *builder;
 	uint32_t val_u32;
-	uint8_t ascii[16];
+	uint8_t oob_data[16];
 
 	switch (type) {
 	case NONE:
 	case OUTPUT:
-	case HEXADECIMAL:
 	default:
 		break;
 
@@ -386,12 +385,18 @@ static void agent_input_done(oob_type_t type, void *buf, uint16_t len,
 			bt_shell_printf("Bad input length\n");
 			break;
 		}
+		/* Fall Through */
 
-		memset(ascii, 0, 16);
-		memcpy(ascii, buf, len);
+	case HEXADECIMAL:
+		if (len > 16) {
+			bt_shell_printf("Bad input length\n");
+			break;
+		}
+		memset(oob_data, 0, 16);
+		memcpy(oob_data, buf, len);
 		reply = l_dbus_message_new_method_return(msg);
 		builder = l_dbus_message_builder_new(reply);
-		append_byte_array(builder, ascii, 16);
+		append_byte_array(builder, oob_data, 16);
 		l_dbus_message_builder_finalize(builder);
 		l_dbus_message_builder_destroy(builder);
 		break;
@@ -539,12 +544,16 @@ static struct l_dbus_message *prompt_static_call(struct l_dbus *dbus,
 		return l_dbus_message_new_error(msg, dbus_err_fail, NULL);
 	}
 
-	if (!strcmp(str, "in-alpha") && !strcmp(str, "out-alpha"))
-		return l_dbus_message_new_error(msg, dbus_err_support, NULL);
-
-	l_dbus_message_ref(msg);
-	agent_input_request(ASCII, 8, "Enter displayed Ascii code",
+	if (!strcmp(str, "in-alpha") || !strcmp(str, "out-alpha")) {
+		l_dbus_message_ref(msg);
+		agent_input_request(ASCII, 8, "Enter displayed Ascii code",
 							agent_input_done, msg);
+	} else if (!strcmp(str, "static-oob")) {
+		l_dbus_message_ref(msg);
+		agent_input_request(HEXADECIMAL, 16, "Enter Static Key",
+							agent_input_done, msg);
+	} else
+		return l_dbus_message_new_error(msg, dbus_err_support, NULL);
 
 	return NULL;
 }
diff --git a/tools/mesh/agent.c b/tools/mesh/agent.c
index 1f83347bf..0258a3803 100644
--- a/tools/mesh/agent.c
+++ b/tools/mesh/agent.c
@@ -81,15 +81,16 @@ static bool str2hex(const char *str, uint16_t in_len, uint8_t *out,
 static void response_hexadecimal(const char *input, void *user_data)
 {
 	uint8_t buf[MAX_HEXADECIMAL_OOB_LEN];
+	uint16_t len = pending_request.len;
 
 	if (!str2hex(input, strlen(input), buf, pending_request.len) ) {
 		bt_shell_printf("Incorrect input: expecting %d hex octets\n",
 			  pending_request.len);
-		return;
+		len = 0;
 	}
 
 	if (pending_request.cb)
-		pending_request.cb(HEXADECIMAL, buf, pending_request.len,
+		pending_request.cb(HEXADECIMAL, buf, len,
 					pending_request.user_data);
 
 	reset_input_request();
@@ -98,14 +99,15 @@ static void response_hexadecimal(const char *input, void *user_data)
 static void response_decimal(const char *input, void *user_data)
 {
 	uint8_t buf[DECIMAL_OOB_LEN];
+	uint16_t len = DECIMAL_OOB_LEN;
 
 	if (strlen(input) > pending_request.len)
-		return;
+		len = 0;
 
 	bt_put_be32(atoi(input), buf);
 
 	if (pending_request.cb)
-		pending_request.cb(DECIMAL, buf, DECIMAL_OOB_LEN,
+		pending_request.cb(DECIMAL, buf, len,
 					pending_request.user_data);
 
 	reset_input_request();
-- 
2.21.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH BlueZ v2] tools/mesh-cfgclient: Add support for Static OOB key
  2020-03-11 22:59 [PATCH BlueZ v2] tools/mesh-cfgclient: Add support for Static OOB key Brian Gix
@ 2020-03-12 18:19 ` Gix, Brian
  0 siblings, 0 replies; 2+ messages in thread
From: Gix, Brian @ 2020-03-12 18:19 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: testtgsh, Stotland, Inga

Applied
On Wed, 2020-03-11 at 15:59 -0700, Brian Gix wrote:
> This fixes a bug that didn't allow 16 octet Static OOB strings during
> provisioning.
> ---
>  tools/mesh-cfgclient.c | 29 +++++++++++++++++++----------
>  tools/mesh/agent.c     | 10 ++++++----
>  2 files changed, 25 insertions(+), 14 deletions(-)
> 
> diff --git a/tools/mesh-cfgclient.c b/tools/mesh-cfgclient.c
> index b4d76de93..4b7bd2200 100644
> --- a/tools/mesh-cfgclient.c
> +++ b/tools/mesh-cfgclient.c
> @@ -372,12 +372,11 @@ static void agent_input_done(oob_type_t type, void *buf, uint16_t len,
>  	struct l_dbus_message *reply = NULL;
>  	struct l_dbus_message_builder *builder;
>  	uint32_t val_u32;
> -	uint8_t ascii[16];
> +	uint8_t oob_data[16];
>  
>  	switch (type) {
>  	case NONE:
>  	case OUTPUT:
> -	case HEXADECIMAL:
>  	default:
>  		break;
>  
> @@ -386,12 +385,18 @@ static void agent_input_done(oob_type_t type, void *buf, uint16_t len,
>  			bt_shell_printf("Bad input length\n");
>  			break;
>  		}
> +		/* Fall Through */
>  
> -		memset(ascii, 0, 16);
> -		memcpy(ascii, buf, len);
> +	case HEXADECIMAL:
> +		if (len > 16) {
> +			bt_shell_printf("Bad input length\n");
> +			break;
> +		}
> +		memset(oob_data, 0, 16);
> +		memcpy(oob_data, buf, len);
>  		reply = l_dbus_message_new_method_return(msg);
>  		builder = l_dbus_message_builder_new(reply);
> -		append_byte_array(builder, ascii, 16);
> +		append_byte_array(builder, oob_data, 16);
>  		l_dbus_message_builder_finalize(builder);
>  		l_dbus_message_builder_destroy(builder);
>  		break;
> @@ -539,12 +544,16 @@ static struct l_dbus_message *prompt_static_call(struct l_dbus *dbus,
>  		return l_dbus_message_new_error(msg, dbus_err_fail, NULL);
>  	}
>  
> -	if (!strcmp(str, "in-alpha") && !strcmp(str, "out-alpha"))
> -		return l_dbus_message_new_error(msg, dbus_err_support, NULL);
> -
> -	l_dbus_message_ref(msg);
> -	agent_input_request(ASCII, 8, "Enter displayed Ascii code",
> +	if (!strcmp(str, "in-alpha") || !strcmp(str, "out-alpha")) {
> +		l_dbus_message_ref(msg);
> +		agent_input_request(ASCII, 8, "Enter displayed Ascii code",
>  							agent_input_done, msg);
> +	} else if (!strcmp(str, "static-oob")) {
> +		l_dbus_message_ref(msg);
> +		agent_input_request(HEXADECIMAL, 16, "Enter Static Key",
> +							agent_input_done, msg);
> +	} else
> +		return l_dbus_message_new_error(msg, dbus_err_support, NULL);
>  
>  	return NULL;
>  }
> diff --git a/tools/mesh/agent.c b/tools/mesh/agent.c
> index 1f83347bf..0258a3803 100644
> --- a/tools/mesh/agent.c
> +++ b/tools/mesh/agent.c
> @@ -81,15 +81,16 @@ static bool str2hex(const char *str, uint16_t in_len, uint8_t *out,
>  static void response_hexadecimal(const char *input, void *user_data)
>  {
>  	uint8_t buf[MAX_HEXADECIMAL_OOB_LEN];
> +	uint16_t len = pending_request.len;
>  
>  	if (!str2hex(input, strlen(input), buf, pending_request.len) ) {
>  		bt_shell_printf("Incorrect input: expecting %d hex octets\n",
>  			  pending_request.len);
> -		return;
> +		len = 0;
>  	}
>  
>  	if (pending_request.cb)
> -		pending_request.cb(HEXADECIMAL, buf, pending_request.len,
> +		pending_request.cb(HEXADECIMAL, buf, len,
>  					pending_request.user_data);
>  
>  	reset_input_request();
> @@ -98,14 +99,15 @@ static void response_hexadecimal(const char *input, void *user_data)
>  static void response_decimal(const char *input, void *user_data)
>  {
>  	uint8_t buf[DECIMAL_OOB_LEN];
> +	uint16_t len = DECIMAL_OOB_LEN;
>  
>  	if (strlen(input) > pending_request.len)
> -		return;
> +		len = 0;
>  
>  	bt_put_be32(atoi(input), buf);
>  
>  	if (pending_request.cb)
> -		pending_request.cb(DECIMAL, buf, DECIMAL_OOB_LEN,
> +		pending_request.cb(DECIMAL, buf, len,
>  					pending_request.user_data);
>  
>  	reset_input_request();

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-03-12 18:21 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-11 22:59 [PATCH BlueZ v2] tools/mesh-cfgclient: Add support for Static OOB key Brian Gix
2020-03-12 18:19 ` Gix, Brian

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.