diff options
Diffstat (limited to 'src/kadmin/cli/kadmin.c')
-rw-r--r-- | src/kadmin/cli/kadmin.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/kadmin/cli/kadmin.c b/src/kadmin/cli/kadmin.c index b3308797a..72dc594b8 100644 --- a/src/kadmin/cli/kadmin.c +++ b/src/kadmin/cli/kadmin.c @@ -93,6 +93,8 @@ void *handle = NULL; krb5_context context; char *ccache_name = NULL; +int locked = 0; + static void usage() { fprintf(stderr, @@ -465,6 +467,17 @@ char *kadmin_startup(argc, argv) int quit() { + kadm5_ret_t retval; + + if (locked) { + retval = kadm5_unlock(handle); + if (retval) { + com_err("quit", retval, "while unlocking locked database"); + return 1; + } + locked = 0; + } + kadm5_destroy(handle); if (ccache_name != NULL) { fprintf(stderr, @@ -477,6 +490,38 @@ int quit() return 0; } +void kadmin_lock(argc, argv) + int argc; + char *argv[]; +{ + kadm5_ret_t retval; + + if (locked) + return; + retval = kadm5_lock(handle); + if (retval) { + com_err("lock", retval, ""); + return; + } + locked = 1; +} + +void kadmin_unlock(argc, argv) + int argc; + char *argv[]; +{ + kadm5_ret_t retval; + + if (!locked) + return; + retval = kadm5_lock(handle); + if (retval) { + com_err("unlock", retval, ""); + return; + } + locked = 0; +} + void kadmin_delprinc(argc, argv) int argc; char *argv[]; |