summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c b/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c
index 5546ba020a..a7101a738d 100644
--- a/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c
+++ b/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c
@@ -365,6 +365,7 @@ asn1_encode_sequence_of_keys(krb5_key_data *key_data, krb5_int16 n_key_data,
val.key_data = key_data;
val.n_key_data = n_key_data;
val.mkvno = mkvno;
+ val.kvno = key_data[0].key_data_kvno;
return accessor.asn1_ldap_encode_sequence_of_keys(&val, code);
}
@@ -375,6 +376,7 @@ asn1_decode_sequence_of_keys(krb5_data *in, krb5_key_data **out,
{
krb5_error_code err;
ldap_seqof_key_data *p;
+ int i;
/*
* This should be pushed back into other library initialization
@@ -387,6 +389,14 @@ asn1_decode_sequence_of_keys(krb5_data *in, krb5_key_data **out,
err = accessor.asn1_ldap_decode_sequence_of_keys(in, &p);
if (err)
return err;
+
+ /* Set kvno and key_data_ver in each key_data element. */
+ for (i = 0; i < p->n_key_data; i++) {
+ p->key_data[i].key_data_kvno = p->kvno;
+ p->key_data[i].key_data_ver =
+ (p->key_data[i].key_data_length[1] == 0) ? 1 : 2;
+ }
+
*out = p->key_data;
*n_key_data = p->n_key_data;
*mkvno = p->mkvno;