diff options
author | Jiří Klimeš <jklimes@redhat.com> | 2015-11-27 20:58:54 +0100 |
---|---|---|
committer | Jiří Klimeš <jklimes@redhat.com> | 2015-11-28 19:48:02 +0100 |
commit | 1b0be2bab00d77578c5f71101488a8d3a556944f (patch) | |
tree | 81d1112e638f5377769ecf87dc4f8eeef438bff2 | |
parent | 3d1557eaad4d408218bee8996c3721eb2aa5e22c (diff) | |
download | NetworkManager-1b0be2bab00d77578c5f71101488a8d3a556944f.tar.gz |
cli: fix a crash in 'nmcli -a con clone'
when providing empty arguments.
Fixes: 0c65b289601d46edb0a950e291ddd376e368ccfd
-rw-r--r-- | clients/cli/connections.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/clients/cli/connections.c b/clients/cli/connections.c index a8f1d69c3e..da41178437 100644 --- a/clients/cli/connections.c +++ b/clients/cli/connections.c @@ -9465,20 +9465,30 @@ do_connection_clone (NmCli *nmc, gboolean temporary, int argc, char **argv) nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; goto finish; } - name = *argv; } name = *argv; - if (!name) { - g_string_printf (nmc->return_text, _("Error: connection ID is missing.")); - nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; - goto finish; - } if (next_arg (&argc, &argv) != 0) { g_string_printf (nmc->return_text, _("Error: <new name> argument is missing.")); nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; goto finish; } new_name = *argv; + if (next_arg (&argc, &argv) == 0) { + g_string_printf (nmc->return_text, _("Error: unexpected extra argument '%s'."), *argv); + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + goto finish; + } + } + + if (!name) { + g_string_printf (nmc->return_text, _("Error: connection ID is missing.")); + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + goto finish; + } + if (!new_name) { + g_string_printf (nmc->return_text, _("Error: <new name> argument is missing.")); + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + goto finish; } connection = nmc_find_connection (nmc->connections, selector, name, NULL); |