aboutsummaryrefslogtreecommitdiff
path: root/src/kadmin
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2019-05-22 13:05:15 -0400
committerGreg Hudson <ghudson@mit.edu>2019-05-29 12:59:44 -0400
commitf5397f358b16a42e570e0a0553099bc58ff799e0 (patch)
treee6d1d69f264e2bd9ffc16d66f1108ff72619419e /src/kadmin
parent03ecb09d2af3544af7b9232c11278f9d2bee4b4b (diff)
downloadkrb5-f5397f358b16a42e570e0a0553099bc58ff799e0.zip
krb5-f5397f358b16a42e570e0a0553099bc58ff799e0.tar.gz
krb5-f5397f358b16a42e570e0a0553099bc58ff799e0.tar.bz2
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
Diffstat (limited to 'src/kadmin')
-rw-r--r--src/kadmin/dbutil/kdb5_util.c11
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;