]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Fixed problem that was causing the src/tests/mkeystash_compat to fail
authorWill Fiveash <will.fiveash@oracle.com>
Thu, 22 Jan 2009 01:03:16 +0000 (01:03 +0000)
committerWill Fiveash <will.fiveash@oracle.com>
Thu, 22 Jan 2009 01:03:16 +0000 (01:03 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/branches/mkey_migrate@21772 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/kdb/kdb_default.c

index e03da7b6b0ace4d4ef9cb8bcd01f0fc10134c80a..2d5f3636bb2a71b36eefa44e4e869914a3ffb0fe 100644 (file)
@@ -524,8 +524,7 @@ krb5_def_fetch_mkey_list(krb5_context        context,
      * latest mkey.
      */
 
-    if (mkey->enctype == master_entry.key_data[0].key_data_type[0] &&
-        mkvno == (krb5_kvno) master_entry.key_data[0].key_data_kvno) {
+    if (mkey->enctype == master_entry.key_data[0].key_data_type[0]) {
         if (krb5_dbekd_decrypt_key_data(context, mkey,
                                         &master_entry.key_data[0],
                                         &tmp_clearkey, NULL) == 0) {
@@ -542,15 +541,18 @@ krb5_def_fetch_mkey_list(krb5_context        context,
         if ((retval = krb5_dbe_lookup_mkey_aux(context, &master_entry, &mkey_aux_data_list)))
             goto clean_n_exit;
 
-        /* for performance sake, try decrypting with matching kvno */
-        for (aux_data_entry = mkey_aux_data_list; aux_data_entry != NULL;
-             aux_data_entry = aux_data_entry->next) {
+        /* mkvno may be 0 in some cases like keyboard and should be ignored */
+        if (mkvno != 0) {
+            /* for performance sake, try decrypting with matching kvno */
+            for (aux_data_entry = mkey_aux_data_list; aux_data_entry != NULL;
+                 aux_data_entry = aux_data_entry->next) {
 
-            if (aux_data_entry->mkey_kvno == mkvno) {
-                if (krb5_dbekd_decrypt_key_data(context, mkey, &aux_data_entry->latest_mkey,
-                                                &tmp_clearkey, NULL) == 0) {
-                    found_key = TRUE;
-                    break;
+                if (aux_data_entry->mkey_kvno == mkvno) {
+                    if (krb5_dbekd_decrypt_key_data(context, mkey, &aux_data_entry->latest_mkey,
+                                                    &tmp_clearkey, NULL) == 0) {
+                        found_key = TRUE;
+                        break;
+                    }
                 }
             }
         }