krb5 commit: Improve error messages from kadmin change_password

Greg Hudson ghudson at mit.edu
Fri May 10 11:06:11 EDT 2019


https://github.com/krb5/krb5/commit/13ba54002d362ebb09be464b4e7ec75050d1348f
commit 13ba54002d362ebb09be464b4e7ec75050d1348f
Author: Robbie Harwood <rharwood at redhat.com>
Date:   Mon May 6 13:13:16 2019 -0400

    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 at mit.edu: adjusted logic to improve mesages in more cases]

 src/kadmin/cli/kadmin.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/kadmin/cli/kadmin.c b/src/kadmin/cli/kadmin.c
index cc74921..fe4cb49 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;
     }


More information about the cvs-krb5 mailing list