* kdb_cpw.c (krb5_dbe_crk):
authorTom Yu <tlyu@mit.edu>
Sat, 19 Feb 2000 01:49:31 +0000 (01:49 +0000)
committerTom Yu <tlyu@mit.edu>
Sat, 19 Feb 2000 01:49:31 +0000 (01:49 +0000)
(krb5_dbe_cpw): Fix to actually save old keys.

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

src/lib/kdb/ChangeLog
src/lib/kdb/kdb_cpw.c

index b3328a0d865d5eca325ac2e7c84ba2a54e7af0b2..699e523e8ecd77569a010723200962bf60b7c608 100644 (file)
@@ -1,3 +1,8 @@
+2000-02-18  Tom Yu  <tlyu@mit.edu>
+
+       * kdb_cpw.c (krb5_dbe_crk): 
+       (krb5_dbe_cpw): Fix to actually save old keys.
+
 1999-10-26  Tom Yu  <tlyu@mit.edu>
 
        * Makefile.in: Clean up usage of CFLAGS, CPPFLAGS, DEFS, DEFINES,
index 5f1bd15dcf83434ae15d131bb1f7287322b23358..d5f0f3676cb1fb014f98d79f0878cbd88513752d 100644 (file)
@@ -206,6 +206,7 @@ krb5_dbe_crk(context, master_key, ks_tuple, ks_tuple_count, keepold, db_entry)
     krb5_db_entry      * db_entry;
 {
     int                  key_data_count;
+    int                          n_new_key_data;
     krb5_key_data      * key_data;
     krb5_error_code      retval;
     int                          kvno;
@@ -228,6 +229,7 @@ krb5_dbe_crk(context, master_key, ks_tuple, ks_tuple_count, keepold, db_entry)
        db_entry->n_key_data = key_data_count;
        db_entry->key_data = key_data;
     } else if (keepold) {
+       n_new_key_data = db_entry->n_key_data;
        for (i = 0; i < key_data_count; i++) {
            retval = krb5_dbe_create_key_data(context, db_entry);
            if (retval) {
@@ -235,6 +237,8 @@ krb5_dbe_crk(context, master_key, ks_tuple, ks_tuple_count, keepold, db_entry)
                                 db_entry->key_data);
                break;
            }
+           db_entry->key_data[i+n_new_key_data] = key_data[i];
+           memset(&key_data[i], 0, sizeof(krb5_key_data));
        }
     } else {
        cleanup_key_data(context, key_data_count, key_data);
@@ -451,6 +455,7 @@ krb5_dbe_cpw(context, master_key, ks_tuple, ks_tuple_count, passwd,
     krb5_db_entry      * db_entry;
 {
     int                  key_data_count;
+    int                          n_new_key_data;
     krb5_key_data      * key_data;
     krb5_error_code      retval;
     int                          old_kvno;
@@ -476,6 +481,7 @@ krb5_dbe_cpw(context, master_key, ks_tuple, ks_tuple_count, passwd,
        db_entry->n_key_data = key_data_count;
        db_entry->key_data = key_data;
     } else if (keepold) {
+       n_new_key_data = db_entry->n_key_data;
        for (i = 0; i < key_data_count; i++) {
            retval = krb5_dbe_create_key_data(context, db_entry);
            if (retval) {
@@ -483,6 +489,8 @@ krb5_dbe_cpw(context, master_key, ks_tuple, ks_tuple_count, passwd,
                                 db_entry->key_data);
                break;
            }
+           db_entry->key_data[i+n_new_key_data] = key_data[i];
+           memset(&key_data[i], 0, sizeof(krb5_key_data));
        }
     } else {
        cleanup_key_data(context, key_data_count, key_data);