summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2022-05-04 09:56:10 +0200
committerLubomir Rintel <lkundrak@v3.sk>2022-06-15 12:13:26 +0200
commit767afeffd8bcd1b87ce1ed974b6629c7ff72a4a3 (patch)
tree704eea8cf317cf13d45b26d5b4789c8de729d622
parentd576f4df44ce24fe6fd0eb27f501683adbdefe11 (diff)
downloadNetworkManager-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.c22
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));