]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Use active master key in update_princ_encryption
authorGreg Hudson <ghudson@mit.edu>
Wed, 23 Oct 2013 15:55:19 +0000 (11:55 -0400)
committerGreg Hudson <ghudson@mit.edu>
Fri, 25 Oct 2013 15:36:11 +0000 (11:36 -0400)
kdb5_util update_princ_encryption should update to the active master
key version, not the most recent.

ticket: 6507
target_version: 1.12
tags: pullup

doc/admin/admin_commands/kdb5_util.rst
src/kadmin/dbutil/kdb5_mkey.c

index 2d7636ef15c750bfb3dda350e6f23af334d74980..f9fcd0afe809a1e95564bc50d8deb38c51e7801a 100644 (file)
@@ -324,8 +324,8 @@ update_princ_encryption
 
 Update all principal records (or only those matching the
 *princ-pattern* glob pattern) to re-encrypt the key data using the
-active database master key, if they are encrypted using older
-versions, and give a count at the end of the number of principals
+active database master key, if they are encrypted using a different
+version, and give a count at the end of the number of principals
 updated.  If the **-f** option is not given, ask for confirmation
 before starting to make changes.  The **-v** option causes each
 principal processed to be listed, with an indication as to whether it
index 18cfb1c167d4e2af76cdafd04bbb2a10aa1bdae7..87a1dc31938a890d143d6af7d80a8846f4db144b 100644 (file)
@@ -933,7 +933,7 @@ kdb5_update_princ_encryption(int argc, char *argv[])
     char *msg;
 #endif
     char *regexp = NULL;
-    krb5_keyblock *tmp_keyblock = NULL;
+    krb5_keyblock *act_mkey;
     krb5_keylist_node *master_keylist = krb5_db_mkey_list_alias(util_context);
 
     while ((optchar = getopt(argc, argv, "fnv")) != -1) {
@@ -1018,19 +1018,14 @@ kdb5_update_princ_encryption(int argc, char *argv[])
         goto cleanup;
     }
 
-    /* Master key is always stored encrypted in the latest version of
-       itself.  */
-    new_mkvno = krb5_db_get_key_data_kvno(util_context,
-                                          master_entry->n_key_data,
-                                          master_entry->key_data);
-
-    retval = krb5_dbe_find_mkey(util_context, master_entry, &tmp_keyblock);
+    retval = krb5_dbe_find_act_mkey(util_context, actkvno_list, &new_mkvno,
+                                    &act_mkey);
     if (retval) {
-        com_err(progname, retval, _("retrieving the most recent master key"));
+        com_err(progname, retval, _("while looking up active master key"));
         exit_status++;
         goto cleanup;
     }
-    new_master_keyblock = *tmp_keyblock;
+    new_master_keyblock = *act_mkey;
 
     if (!force &&
         !data.dry_run &&