}
r->e_text = NULL;
- if (r->fast.flags.requested_hidden_names) {
- error_client = NULL;
- error_server = NULL;
- }
- csec = 0;
- cusec = 0;
ret = _kdc_fast_mk_response(r->context, armor_crypto,
error_method, NULL, NULL,
heim_assert(r != NULL, "invalid request in _kdc_fast_mk_error");
- if (r->e_data != NULL) {
- e_data = r->e_data;
+ if (r->e_data.length) {
+ e_data = &r->e_data;
} else {
ret = _kdc_fast_mk_e_data(r,
error_method,
e_data = &_e_data;
}
+ if (armor_crypto) {
+ if (r->fast.flags.requested_hidden_names) {
+ error_client = NULL;
+ error_server = NULL;
+ }
+ csec = 0;
+ cusec = 0;
+ }
+
ret = krb5_mk_error(r->context,
outer_error,
r->e_text,
return ret;
}
+/*
+ * Override the e-data field to be returned in an error reply. The data will be
+ * owned by the KDC and eventually will be freed with krb5_data_free().
+ */
+KDC_LIB_FUNCTION krb5_error_code KDC_LIB_CALL
+kdc_request_set_e_data(astgs_request_t r, heim_octet_string e_data)
+{
+ krb5_data_free(&r->e_data);
+ r->e_data = e_data;
+
+ return 0;
+}
+
#undef _KDC_REQUEST_GET_ACCESSOR
#define _KDC_REQUEST_GET_ACCESSOR(R, T, f) \
KDC_LIB_FUNCTION T KDC_LIB_CALL \
kdc_log(r->context, r->config, 4, "%s", e_text);
}
-/*
- * Override the e-data field to be returned in an error reply. The data will be
- * owned by the KDC and eventually will be freed with krb5_data_free().
- */
-krb5_error_code
-kdc_set_e_data(astgs_request_t r, heim_octet_string e_data)
-{
- if (r->e_data == NULL) {
- ALLOC(r->e_data);
- if (r->e_data == NULL) {
- return ENOMEM;
- }
- } else {
- krb5_data_free(r->e_data);
- }
-
- *r->e_data = e_data;
-
- return 0;
-}
-
void
_kdc_log_timestamp(astgs_request_t r, const char *type,
KerberosTime authtime, KerberosTime *starttime,
kdc_request_set_canon_client_princ
kdc_request_set_client_princ
kdc_request_set_cname
+ kdc_request_set_e_data
kdc_request_set_error_code
kdc_request_set_krbtgt_princ
kdc_request_set_pac
kdc_request_set_reply_key
kdc_request_set_server_princ
kdc_request_set_sname
- kdc_set_e_data
kdc_audit_addkv
kdc_audit_addkv_number
kdc_audit_addkv_object
free(r->cname);
free(r->sname);
free(r->e_text_buf);
- if (r->e_data)
- krb5_free_data(context, r->e_data);
+ krb5_data_free(&r->e_data);
}
heim_release(r->reason);
kdc_request_set_canon_client_princ;
kdc_request_set_client_princ;
kdc_request_set_cname;
+ kdc_request_set_e_data;
kdc_request_set_error_code;
kdc_request_set_krbtgt_princ;
kdc_request_set_pac;
kdc_request_set_reply_key;
kdc_request_set_server_princ;
kdc_request_set_sname;
- kdc_set_e_data;
kdc_audit_addkv;
kdc_audit_addkv_number;
kdc_audit_addkv_object;
char *cname; \
char *sname; \
const char *e_text; \
- heim_octet_string *e_data; \
+ heim_octet_string e_data; \
char *e_text_buf; \
heim_string_t reason; \
/* auditing key/value store */ \
static krb5_error_code KRB5_CALLCONV
pac_verify(void *ctx,
astgs_request_t r,
- const krb5_principal new_ticket_client,
- const krb5_principal delegation_proxy,
+ krb5_const_principal new_ticket_client,
+ hdb_entry * delegation_proxy,
hdb_entry * client,
hdb_entry * server,
hdb_entry * krbtgt,
- krb5_pac pac,
- krb5_boolean *is_trusted)
+ EncTicketPart *ticket,
+ krb5_pac pac)
{
krb5_context context = kdc_request_get_context((kdc_request_t)r);
krb5_error_code ret;