summaryrefslogtreecommitdiffstats
path: root/src/admin/create
diff options
context:
space:
mode:
authorJohn Kohl <jtkohl@mit.edu>1991-01-04 14:51:45 +0000
committerJohn Kohl <jtkohl@mit.edu>1991-01-04 14:51:45 +0000
commita6985818378387da012a32898ee50054c48da06b (patch)
tree0ec7c7da848ca7ab99c1c000f115832e1a88a6ce /src/admin/create
parent0a43cfa4a7b8278e5678633fc86d4528bc95b017 (diff)
downloadkrb5-a6985818378387da012a32898ee50054c48da06b.tar.gz
krb5-a6985818378387da012a32898ee50054c48da06b.tar.xz
krb5-a6985818378387da012a32898ee50054c48da06b.zip
some better error interpretation and sequencing when a database
exists already git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@1616 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/admin/create')
-rw-r--r--src/admin/create/kdb5_create.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/src/admin/create/kdb5_create.c b/src/admin/create/kdb5_create.c
index a4d436bd9..e0e2de6d2 100644
--- a/src/admin/create/kdb5_create.c
+++ b/src/admin/create/kdb5_create.c
@@ -173,13 +173,12 @@ char *argv[];
if (!dbname)
dbname = DEFAULT_DBM_FILE; /* XXX? */
- if (retval = krb5_db_create(dbname)) {
- com_err(argv[0], retval, "while creating database '%s'",
- dbname);
- exit(1);
- }
- if (retval = krb5_db_set_name(dbname)) {
- com_err(argv[0], retval, "while setting active database to '%s'",
+ retval = krb5_db_set_name(dbname);
+ if (!retval) retval = EEXIST;
+
+ if (retval == EEXIST || retval == EACCES || retval == EPERM) {
+ /* it exists ! */
+ com_err(argv[0], 0, "The database '%s' appears to already exist",
dbname);
exit(1);
}
@@ -228,6 +227,20 @@ master key name '%s'\n",
(void) krb5_finish_key(&master_encblock);
exit(1);
}
+ if (retval = krb5_db_create(dbname)) {
+ (void) krb5_finish_key(&master_encblock);
+ (void) krb5_finish_random_key(&master_encblock, &rblock.rseed);
+ com_err(argv[0], retval, "while creating database '%s'",
+ dbname);
+ exit(1);
+ }
+ if (retval = krb5_db_set_name(dbname)) {
+ (void) krb5_finish_key(&master_encblock);
+ (void) krb5_finish_random_key(&master_encblock, &rblock.rseed);
+ com_err(argv[0], retval, "while setting active database to '%s'",
+ dbname);
+ exit(1);
+ }
if (retval = krb5_db_init()) {
(void) krb5_finish_key(&master_encblock);
(void) krb5_finish_random_key(&master_encblock, &rblock.rseed);