diff --git a/tools/btgatt-client.c b/tools/btgatt-client.c
index 0f6a1bd..2153bec 100644
--- a/tools/btgatt-client.c
+++ b/tools/btgatt-client.c
static void cmd_write_value(struct client *cli, char *cmd_str)
{
- int opt, i;
+ int opt, i, val;
char *argvbuf[516];
char **argv = argvbuf;
int argc = 1;
}
for (i = 1; i < argc; i++) {
- if (strlen(argv[i]) != 2) {
- printf("Invalid value byte: %s\n",
- argv[i]);
- goto done;
- }
-
- value[i-1] = strtol(argv[i], &endptr, 0);
+ val = strtol(argv[i], &endptr, 0);
if (endptr == argv[i] || *endptr != '\0'
- || errno == ERANGE) {
+ || errno == ERANGE || val < 0 || val > 255) {
printf("Invalid value byte: %s\n",
argv[i]);
goto done;
}
+ value[i-1] = val;
}
}
static void cmd_write_long_value(struct client *cli, char *cmd_str)
{
- int opt, i;
+ int opt, i, val;
char *argvbuf[516];
char **argv = argvbuf;
int argc = 1;
}
for (i = 2; i < argc; i++) {
- if (strlen(argv[i]) != 2) {
- printf("Invalid value byte: %s\n",
- argv[i]);
- free(value);
- return;
- }
-
- value[i-2] = strtol(argv[i], &endptr, 0);
+ val = strtol(argv[i], &endptr, 0);
if (endptr == argv[i] || *endptr != '\0'
- || errno == ERANGE) {
+ || errno == ERANGE || val < 0 || val > 255) {
printf("Invalid value byte: %s\n",
argv[i]);
free(value);
return;
}
+ value[i-2] = val;
}
}
static void cmd_write_prepare(struct client *cli, char *cmd_str)
{
- int opt, i;
+ int opt, i, val;
char *argvbuf[516];
char **argv = argvbuf;
int argc = 0;
}
for (i = 2; i < argc; i++) {
- if (strlen(argv[i]) != 2) {
- printf("Invalid value byte: %s\n", argv[i]);
- free(value);
- return;
- }
-
- value[i-2] = strtol(argv[i], &endptr, 0);
- if (endptr == argv[i] || *endptr != '\0' || errno == ERANGE) {
+ val = strtol(argv[i], &endptr, 0);
+ if (endptr == argv[i] || *endptr != '\0' || errno == ERANGE
+ || val < 0 || val > 255) {
printf("Invalid value byte: %s\n", argv[i]);
free(value);
return;
}
+ value[i-2] = val;
}
done: