* dump.c, kadm5_create.c, kdb5_create.c: create policy database
authorBarry Jaspan <bjaspan@mit.edu>
Thu, 1 Aug 1996 19:56:53 +0000 (19:56 +0000)
committerBarry Jaspan <bjaspan@mit.edu>
Thu, 1 Aug 1996 19:56:53 +0000 (19:56 +0000)
        and kadm5 principals when loading a databas

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@8891 dc483132-0cff-0310-8789-dd5450dbe970

src/kadmin/dbutil/ChangeLog
src/kadmin/dbutil/dump.c
src/kadmin/dbutil/kadm5_create.c
src/kadmin/dbutil/kdb5_create.c
src/kadmin/dbutil/loadv4.c

index 82e18f5938cf7532b4a589f0bc9d36e959286144..d22b83a07d6b8ec9698233abc07b85542eb04bf0 100644 (file)
@@ -1,5 +1,8 @@
 Thu Aug  1 14:34:51 1996  Barry Jaspan  <bjaspan@DUN-DUN-NOODLES>
 
+       * dump.c, kadm5_create.c, kdb5_create.c: create policy database
+        and kadm5 principals when loading a databas
+
        * loadv4.c: create empty policy database after loading V4 dump file
 
        * dumpv4.c (dump_v4db): use global_params.stash_file
index 29bda177a94bbca8f1b0b245bac0e53d5af78e32..d362bc12109319395aa0b9923611354d75a97891 100644 (file)
@@ -2040,6 +2040,16 @@ load_db(argc, argv)
     if (!update && (kret = osa_adb_create_policy_db(&newparams))) {
         fprintf(stderr, "%s: %s while creating policy database\n",
                 programname, error_message(kret));
+        exit_status++;
+        kadm5_free_config_params(kcontext, &newparams);
+        if (dumpfile) fclose(f);
+        return;
+    }
+    if (!update && (load != &beta7_version) &&
+       (kret = kadm5_create_magic_princs(&newparams, kcontext))) {
+        fprintf(stderr, "%s: %s while creating KADM5 principals\n",
+                programname, error_message(kret));
+        exit_status++;
         kadm5_free_config_params(kcontext, &newparams);
         if (dumpfile) fclose(f);
         return;
index d31ce33192fddd69c0a1b04028157f7126a3e844..45eeef29bf754e7d004c6a2b1baa7ba2a00f04ae 100644 (file)
@@ -29,7 +29,7 @@ int add_admin_princ(void *handle, krb5_context context,
 #define ADMIN_LIFETIME 60*60*3 /* 3 hours */
 #define CHANGEPW_LIFETIME 60*5 /* 5 minutes */
 
-extern char *whoami;
+extern char *progname;
 
 extern krb5_encrypt_block master_encblock;
 extern krb5_keyblock master_keyblock;
@@ -63,34 +63,41 @@ int kadm5_create(kadm5_config_params *params)
       */
      if (retval = kadm5_get_config_params(context, NULL, NULL,
                                          params, params)) {
-         com_err(whoami, retval, str_INITING_KCONTEXT);
+         com_err(progname, retval, str_INITING_KCONTEXT);
          return 1;
      }
 
      if (retval = osa_adb_create_policy_db(params)) {
-         com_err(whoami, retval, str_CREATING_POLICY_DB);
+         com_err(progname, retval, str_CREATING_POLICY_DB);
          return 1;
      }
 
-     if ((retval = kadm5_init(whoami, NULL, NULL, params,
+     retval = kadm5_create_magic_princs(params, context);
+
+     krb5_free_context(context);
+
+     return retval;
+}
+
+int kadm5_create_magic_princs(kadm5_config_params *params,
+                             krb5_context *context)
+{
+     int retval;
+     void *handle;
+     
+     if ((retval = kadm5_init(progname, NULL, NULL, params,
                              KADM5_STRUCT_VERSION,
                              KADM5_API_VERSION_2,
                              &handle))) {
-         com_err(whoami, retval, str_INITING_KCONTEXT);
-
-         krb5_free_context(context);
-         exit(ERR);
+         com_err(progname, retval, str_INITING_KCONTEXT);
+         return retval;
      }
 
      retval = add_admin_princs(handle, context, params->realm);
 
      kadm5_destroy(handle);
-     krb5_free_context(context);
 
-     if (retval)
-         exit(retval);
-     
-     return 0;
+     return retval;
 }
 
 /*
@@ -202,7 +209,7 @@ int add_admin_princ(void *handle, krb5_context context,
 
      fullname = build_name_with_realm(name, realm);
      if (ret = krb5_parse_name(context, fullname, &ent.principal)) {
-         com_err(whoami, ret, str_PARSE_NAME);
+         com_err(progname, ret, str_PARSE_NAME);
          return(ERR);
      }
      ent.max_life = lifetime;
@@ -220,7 +227,7 @@ int add_admin_princ(void *handle, krb5_context context,
                                                  KADM5_ATTRIBUTES));
 
          if (ret) {
-              com_err(whoami, ret, str_PUT_PRINC, fullname);
+              com_err(progname, ret, str_PUT_PRINC, fullname);
               krb5_free_principal(context, ent.principal);
               free(fullname);
               return ERR;
@@ -233,7 +240,7 @@ int add_admin_princ(void *handle, krb5_context context,
      free(fullname);
 
      if (ret) {
-         com_err(whoami, ret, str_RANDOM_KEY, fullname);
+         com_err(progname, ret, str_RANDOM_KEY, fullname);
          return ERR;
      }
 
index 2e22e229421989b35ba3a9ae12a2dfb68e93c3aa..e05cc4ee08f0b5a8ae5a02ab1354c9df137b2f8b 100644 (file)
@@ -114,8 +114,8 @@ krb5_principal_data db_create_princ = {
 };
 
 static char *mkey_password = 0;
-char *whoami;
 
+extern char *progname;
 extern int exit_status;
 extern osa_adb_policy_t policy_db;
 extern kadm5_config_params global_params;
@@ -123,7 +123,7 @@ extern krb5_context util_context;
 
 static void usage()
 {
-    fprintf(stderr, "usage: %s [-s]\n", whoami);
+    fprintf(stderr, "usage: %s [-s]\n", progname);
     exit_status++;
 }
 
@@ -144,7 +144,6 @@ void kdb5_create(argc, argv)
           
     if (strrchr(argv[0], '/'))
        argv[0] = strrchr(argv[0], '/')+1;
-    whoami = argv[0];
 
     mkey_password = NULL;
     optind = 1;
index f4e54a27805f754357b0af4c959d027caf54833d..7dfade9f59a39fef7807af4bff70373cb8b9bae6 100644 (file)
@@ -429,8 +429,7 @@ master key name '%s'\n",
     memset((char *)master_keyblock.contents, 0, master_keyblock.length);
 
     /*
-     * Cons up config params for new policy database (which will be
-     * empty).  The policy dbname keys off the dbname.
+     * Cons up config params for new database.
      */
     newparams = global_params;
     newparams.mask &= ~(KADM5_CONFIG_ADBNAME | KADM5_CONFIG_ADB_LOCKFILE);
@@ -442,18 +441,24 @@ master key name '%s'\n",
                 "parameters");
         return;
     }
+
     /*
      * Always create the policy db, even if we are not loading a dump
-     * file with policy info, because they are probably loading an old
-     * dump intending to use it with the new kadm5 system (ie: using
-     * load as create).
+     * file with policy info.
      */
     if (retval = osa_adb_create_policy_db(&newparams)) {
         com_err(PROGNAME, retval, "while creating policy database");
         kadm5_free_config_params(context, &newparams);
         return;
     }
-
+    /*
+     * Create the magic principals in the database.
+     */
+    if (retval = kadm5_create_magic_princs(&newparams, context)) {
+        com_err(PROGNAME, retval, "while creating KADM5 principals");
+        return;
+    }
+    
     krb5_free_context(context);
     return;
 }