kdc: add attribute dictionary to kdc_request_t

Add a heim_dict_t to the KDC request structure for use by pre-authentication
mechanisms and plugins.
This commit is contained in:
Luke Howard
2021-12-30 21:39:02 +11:00
parent b27026996a
commit a8ff420b16
10 changed files with 87 additions and 28 deletions

View File

@@ -359,7 +359,10 @@ process_request(krb5_context context,
r->datagram_reply = datagram_reply;
r->reply = reply;
r->kv = heim_dict_create(10);
if (!r->kv) {
r->attributes = heim_dict_create(1);
if (r->kv == NULL || r->attributes == NULL) {
heim_release(r->kv);
heim_release(r->attributes);
free(r);
return krb5_enomem(context);
}
@@ -385,6 +388,7 @@ process_request(krb5_context context,
heim_release(r->reason);
heim_release(r->kv);
heim_release(r->attributes);
free(r);
return ret;
}
@@ -392,6 +396,7 @@ process_request(krb5_context context,
heim_release(r->reason);
heim_release(r->kv);
heim_release(r->attributes);
free(r);
return -1;
}
@@ -505,3 +510,27 @@ out:
return 0;
}
krb5_error_code
krb5_kdc_request_set_attribute(kdc_request_t r, heim_object_t key, heim_object_t value)
{
return heim_dict_set_value(r->attributes, key, value);
}
heim_object_t
krb5_kdc_request_get_attribute(kdc_request_t r, heim_object_t key)
{
return heim_dict_get_value(r->attributes, key);
}
heim_object_t
krb5_kdc_request_copy_attribute(kdc_request_t r, heim_object_t key)
{
return heim_dict_copy_value(r->attributes, key);
}
void
krb5_kdc_request_delete_attribute(kdc_request_t r, heim_object_t key)
{
heim_dict_delete_key(r->attributes, key);
}