From 9a4fdd8f4a4038be85035bde1a1b9d0fc4372c9c Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Wed, 23 Jul 1997 05:55:04 +0000 Subject: [PATCH] updated to hdb changes git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2546 ec53bebd-3082-4978-b11e-865c3cabbd6b --- kpasswd/kpasswdd.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/kpasswd/kpasswdd.c b/kpasswd/kpasswdd.c index 3cb933f4e..7021ca9f9 100644 --- a/kpasswd/kpasswdd.c +++ b/kpasswd/kpasswdd.c @@ -216,7 +216,7 @@ change (krb5_context context, HDB *db; hdb_entry ent; krb5_data salt; - krb5_keyblock new_keyblock; + krb5_keyblock new_keyblock, *old_keyblock; krb5_unparse_name (context, principal, &c); @@ -260,21 +260,27 @@ change (krb5_context context, memset (&new_keyblock, 0, sizeof(new_keyblock)); krb5_string_to_key_data (pwd_data, &salt, &new_keyblock); krb5_data_free (&salt); - if (new_keyblock.keytype == ent.keyblock.keytype - && new_keyblock.keyvalue.length == ent.keyblock.keyvalue.length + old_keyblock = &ent.keys.val[0].key; + + if (new_keyblock.keytype == old_keyblock->keytype + && new_keyblock.keyvalue.length == old_keyblock->keyvalue.length && memcmp (new_keyblock.keyvalue.data, - ent.keyblock.keyvalue.data, + old_keyblock->keyvalue.data, new_keyblock.keyvalue.length) == 0) { ret = 0; } else { - memset (&ent.keyblock, 0, sizeof(ent.keyblock)); - ent.keyblock.keytype = new_keyblock.keytype; - krb5_data_copy (&ent.keyblock.keyvalue, + Event *e; + + memset (old_keyblock, 0, sizeof(*old_keyblock)); + old_keyblock->keytype = new_keyblock.keytype; + krb5_data_copy (&old_keyblock->keyvalue, new_keyblock.keyvalue.data, new_keyblock.keyvalue.length); ent.kvno++; - ent.last_change = time(NULL); - krb5_copy_principal (context, principal, &ent.changed_by); + e = malloc(sizeof(*e)); + e->time = time(NULL); + krb5_copy_principal (context, principal, &e->principal); + ent.modified_by = e; ret = db->store (context, db, &ent); } memset (&new_keyblock, 0, sizeof(new_keyblock));