diff options
author | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2017-12-08 08:52:48 -0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2017-12-08 13:06:11 +0200 |
commit | 8edcc31fa2a754e0e2ee70f0152485c75bd8271b (patch) | |
tree | b0a26a9f3fe291ea41654976c541261b73a30305 /client/advertising.c | |
parent | a6ef232a3500e4dd8ceae01ded8a3eb27c34f9b3 (diff) | |
download | bluez-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.c | 14 |
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(); |