diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2022-05-04 09:56:10 +0200 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2022-06-15 12:13:26 +0200 |
commit | 767afeffd8bcd1b87ce1ed974b6629c7ff72a4a3 (patch) | |
tree | 704eea8cf317cf13d45b26d5b4789c8de729d622 | |
parent | d576f4df44ce24fe6fd0eb27f501683adbdefe11 (diff) | |
download | NetworkManager-767afeffd8bcd1b87ce1ed974b6629c7ff72a4a3.tar.gz |
nmcli/devices: make get_device_list() terminate on "--"
Don't consider "--" a device name. Instead, treat it as a signal to stop
reading the device list.
If a caller expects nothing beyond the device names, it now has to
check.
-rw-r--r-- | src/nmcli/devices.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/nmcli/devices.c b/src/nmcli/devices.c index 1ed253ff94..eb18199199 100644 --- a/src/nmcli/devices.c +++ b/src/nmcli/devices.c @@ -1140,6 +1140,12 @@ get_device_list(NmCli *nmc, int *argc, const char *const **argv) devices = nmc_get_devices_sorted(nmc->client); while (*argc > 0) { + if (strcmp(**argv, "--") == 0) { + (*argc)--; + (*argv)++; + break; + } + if (*argc == 1 && nmc->complete) complete_device(devices, **argv, FALSE); @@ -2627,6 +2633,11 @@ do_devices_disconnect(const NMCCommand *cmd, NmCli *nmc, int argc, const char *c next_arg(nmc, &argc, &argv, NULL); queue = get_device_list(nmc, &argc, &argv); + if (argc) { + g_string_printf(nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; + } if (!queue) return; if (nmc->complete) @@ -2695,6 +2706,11 @@ do_devices_delete(const NMCCommand *cmd, NmCli *nmc, int argc, const char *const next_arg(nmc, &argc, &argv, NULL); queue = get_device_list(nmc, &argc, &argv); + if (argc) { + g_string_printf(nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; + } if (!queue) return; if (nmc->complete) @@ -2907,6 +2923,12 @@ do_devices_monitor(const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons GSList *queue = get_device_list(nmc, &argc, &argv); GSList *iter; + if (argc) { + g_string_printf(nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; + } + /* Monitor the specified devices. */ for (iter = queue; iter; iter = g_slist_next(iter)) device_watch(nmc, NM_DEVICE(iter->data)); |