summaryrefslogtreecommitdiff
path: root/client/advertising.c
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2017-12-08 08:52:48 -0200
committerJohan Hedberg <johan.hedberg@intel.com>2017-12-08 13:06:11 +0200
commit8edcc31fa2a754e0e2ee70f0152485c75bd8271b (patch)
treeb0a26a9f3fe291ea41654976c541261b73a30305 /client/advertising.c
parenta6ef232a3500e4dd8ceae01ded8a3eb27c34f9b3 (diff)
downloadbluez-8edcc31fa2a754e0e2ee70f0152485c75bd8271b.tar.gz
shared/shell: Don't remove command from arguments
Maintain the original argc and argv so the callback has a chance to parse the command if it has to.
Diffstat (limited to 'client/advertising.c')
-rw-r--r--client/advertising.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/client/advertising.c b/client/advertising.c
index 8f0360177..f0fd3599e 100644
--- a/client/advertising.c
+++ b/client/advertising.c
@@ -440,10 +440,10 @@ void ad_advertise_uuids(DBusConnection *conn, int argc, char *argv[])
ad.uuids = NULL;
ad.uuids_len = 0;
- if (!argc || !strlen(argv[0]))
+ if (argc < 2 || !strlen(argv[1]))
return;
- ad.uuids = g_strdupv(argv);
+ ad.uuids = g_strdupv(&argv[1]);
if (!ad.uuids) {
bt_shell_printf("Failed to parse input\n");
return;
@@ -467,10 +467,10 @@ void ad_advertise_service(DBusConnection *conn, int argc, char *argv[])
ad_clear_service();
- if (!argc)
+ if (argc < 2)
return;
- ad.service.uuid = g_strdup(argv[0]);
+ ad.service.uuid = g_strdup(argv[1]);
data = &ad.service.data;
for (i = 1; i < (unsigned int) argc; i++) {
@@ -511,10 +511,10 @@ void ad_advertise_manufacturer(DBusConnection *conn, int argc, char *argv[])
ad_clear_manufacturer();
- if (argc == 0)
+ if (argc < 2)
return;
- val = strtol(argv[0], &endptr, 0);
+ val = strtol(argv[1], &endptr, 0);
if (!endptr || *endptr != '\0' || val > UINT16_MAX) {
bt_shell_printf("Invalid manufacture id\n");
return;
@@ -523,7 +523,7 @@ void ad_advertise_manufacturer(DBusConnection *conn, int argc, char *argv[])
ad.manufacturer.id = val;
data = &ad.manufacturer.data;
- for (i = 1; i < (unsigned int) argc; i++) {
+ for (i = 2; i < (unsigned int) argc; i++) {
if (i >= G_N_ELEMENTS(data->data)) {
bt_shell_printf("Too much data\n");
ad_clear_manufacturer();