* [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.