kdc: allow audit plugins to influence return code
Honor the return code of _kdc_audit_request(), propagating if non-zero. Note that this is principally intended to allow the audit plugin to return HDB_ERR_NOT_FOUND_HERE, which influences whether the KDC sends an error reply or not. If the audit plugin also wishes to rewrite r->error_code, it must do so separately. Closes: #964
This commit is contained in:
@@ -2733,7 +2733,13 @@ _kdc_as_rep(astgs_request_t r)
|
|||||||
|
|
||||||
out:
|
out:
|
||||||
r->error_code = ret;
|
r->error_code = ret;
|
||||||
_kdc_audit_request(r);
|
{
|
||||||
|
krb5_error_code ret2 = _kdc_audit_request(r);
|
||||||
|
if (ret2) {
|
||||||
|
krb5_data_free(r->reply);
|
||||||
|
ret = ret2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* In case of a non proxy error, build an error message.
|
* In case of a non proxy error, build an error message.
|
||||||
|
@@ -2157,7 +2157,13 @@ _kdc_tgs_rep(astgs_request_t r)
|
|||||||
|
|
||||||
out:
|
out:
|
||||||
r->error_code = ret;
|
r->error_code = ret;
|
||||||
_kdc_audit_request(r);
|
{
|
||||||
|
krb5_error_code ret2 = _kdc_audit_request(r);
|
||||||
|
if (ret2) {
|
||||||
|
krb5_data_free(data);
|
||||||
|
ret = ret2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(ret && ret != HDB_ERR_NOT_FOUND_HERE && data->data == NULL){
|
if(ret && ret != HDB_ERR_NOT_FOUND_HERE && data->data == NULL){
|
||||||
METHOD_DATA error_method = { 0, NULL };
|
METHOD_DATA error_method = { 0, NULL };
|
||||||
|
Reference in New Issue
Block a user