]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Improve error messages from kadmin change_password
authorRobbie Harwood <rharwood@redhat.com>
Mon, 6 May 2019 17:13:16 +0000 (13:13 -0400)
committerGreg Hudson <ghudson@mit.edu>
Fri, 10 May 2019 14:42:40 +0000 (10:42 -0400)
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]

src/kadmin/cli/kadmin.c

index cc74921bf2de5bf892ef7a8ababa15f24cabd71c..fe4cb493c064873348de45f928f0284365034e1c 100644 (file)
@@ -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;
     }