From: Robbie Harwood Date: Mon, 6 May 2019 17:13:16 +0000 (-0400) Subject: Improve error messages from kadmin change_password X-Git-Tag: krb5-1.18-beta1~139 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=13ba54002d362ebb09be464b4e7ec75050d1348f;p=thirdparty%2Fkrb5.git Improve error messages from kadmin change_password The checks for missing option arguments were dead code, because the loop condition requires at least two remaining arguments. Instead check for at least one argument with a leading "-", and check for too many or too few arguments after the loop. Add an initial message for unrecognized options. [ghudson@mit.edu: adjusted logic to improve mesages in more cases] --- diff --git a/src/kadmin/cli/kadmin.c b/src/kadmin/cli/kadmin.c index cc74921bf2..fe4cb493c0 100644 --- a/src/kadmin/cli/kadmin.c +++ b/src/kadmin/cli/kadmin.c @@ -797,11 +797,11 @@ kadmin_cpw(int argc, char *argv[]) char **db_args = NULL; int db_args_size = 0; - if (argc < 2) { + if (argc < 1) { cpw_usage(NULL); return; } - for (argv++, argc--; argc > 1; argc--, argv++) { + for (argv++, argc--; argc > 0 && **argv == '-'; argc--, argv++) { if (!strcmp("-x", *argv)) { argc--; if (argc < 1) { @@ -841,12 +841,16 @@ kadmin_cpw(int argc, char *argv[]) goto cleanup; } } else { + com_err("change_password", 0, _("unrecognized option %s"), *argv); cpw_usage(NULL); goto cleanup; } } - if (*argv == NULL) { - com_err("change_password", 0, _("missing principal name")); + if (argc != 1) { + if (argc < 1) + com_err("change_password", 0, _("missing principal name")); + else + com_err("change_password", 0, _("too many arguments")); cpw_usage(NULL); goto cleanup; }