[30519] in CVS-changelog-for-Kerberos-V5

home help back first fref pref prev next nref lref last post

krb5 commit: Simplify kdb5_util global argv processing

daemon@ATHENA.MIT.EDU (Greg Hudson)
Wed May 29 14:31:23 2019

Date: Wed, 29 May 2019 14:31:16 -0400
From: Greg Hudson <ghudson@mit.edu>
Message-ID: <201905291831.x4TIVGoa001943@drugstore.mit.edu>
To: <cvs-krb5@mit.edu>
MIME-Version: 1.0
Reply-To: krbdev@mit.edu
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: cvs-krb5-bounces@mit.edu

https://github.com/krb5/krb5/commit/f5397f358b16a42e570e0a0553099bc58ff799e0
commit f5397f358b16a42e570e0a0553099bc58ff799e0
Author: Greg Hudson <ghudson@mit.edu>
Date:   Wed May 22 13:05:15 2019 -0400

    Simplify kdb5_util global argv processing
    
    kdb5_util could issue an unexplained error if a command argument
    matched a command name, such as when trying to load a dump file named
    "dump".  It could also mysteriously work if the command name and its
    arguments were misordered, such as "kdb5_util kdb.dump load".
    
    In the main option loop, build cmd_argv without special-casing command
    names; then look up cmd_argv[0] after the loop.
    
    ticket: 8806

 src/kadmin/dbutil/kdb5_util.c |   11 ++++-------
 1 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/src/kadmin/dbutil/kdb5_util.c b/src/kadmin/dbutil/kdb5_util.c
index e73e2c6..a720eec 100644
--- a/src/kadmin/dbutil/kdb5_util.c
+++ b/src/kadmin/dbutil/kdb5_util.c
@@ -222,7 +222,7 @@ int main(argc, argv)
         exit(1);
     }
     memset(cmd_argv, 0, sizeof(char *)*argc);
-    cmd_argc = 1;
+    cmd_argc = 0;
 
     argv++; argc--;
     while (*argv) {
@@ -288,11 +288,6 @@ int main(argc, argv)
             manual_mkey = TRUE;
             global_params.mkey_from_kbd = 1;
             global_params.mask |= KADM5_CONFIG_MKEY_FROM_KBD;
-        } else if (cmd_lookup(*argv) != NULL) {
-            if (cmd_argv[0] == NULL)
-                cmd_argv[0] = *argv;
-            else
-                usage();
         } else {
             cmd_argv[cmd_argc++] = *argv;
         }
@@ -301,6 +296,9 @@ int main(argc, argv)
 
     if (cmd_argv[0] == NULL)
         usage();
+    cmd = cmd_lookup(cmd_argv[0]);
+    if (cmd == NULL)
+        usage();
 
     if( !util_context->default_realm )
     {
@@ -335,7 +333,6 @@ int main(argc, argv)
                 "while setting up enctype %d", master_keyblock.enctype);
     }
 
-    cmd = cmd_lookup(cmd_argv[0]);
     if (cmd->opendb && open_db_and_mkey())
         return exit_status;
 
_______________________________________________
cvs-krb5 mailing list
cvs-krb5@mit.edu
https://mailman.mit.edu/mailman/listinfo/cvs-krb5

home help back first fref pref prev next nref lref last post