diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/kdc/do_as_req.c | 4 | ||||
| -rw-r--r-- | src/kdc/do_tgs_req.c | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/kdc/do_as_req.c b/src/kdc/do_as_req.c index 363d3ab95..81db76756 100644 --- a/src/kdc/do_as_req.c +++ b/src/kdc/do_as_req.c @@ -539,6 +539,8 @@ process_as_req(krb5_kdc_req *request, krb5_data *req_pkt, } errcode = krb5_db_get_principal(kdc_context, state->request->client, state->c_flags, &state->client); + if (errcode == KRB5_KDB_CANTLOCK_DB) + errcode = KRB5KDC_ERR_SVC_UNAVAILABLE; if (errcode == KRB5_KDB_NOENTRY) { state->status = "CLIENT_NOT_FOUND"; if (vague_errors) @@ -570,6 +572,8 @@ process_as_req(krb5_kdc_req *request, krb5_data *req_pkt, } errcode = krb5_db_get_principal(kdc_context, state->request->server, s_flags, &state->server); + if (errcode == KRB5_KDB_CANTLOCK_DB) + errcode = KRB5KDC_ERR_SVC_UNAVAILABLE; if (errcode == KRB5_KDB_NOENTRY) { state->status = "SERVER_NOT_FOUND"; errcode = KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN; diff --git a/src/kdc/do_tgs_req.c b/src/kdc/do_tgs_req.c index 56d9869c1..e9cb4212a 100644 --- a/src/kdc/do_tgs_req.c +++ b/src/kdc/do_tgs_req.c @@ -215,6 +215,8 @@ ref_tgt_again: errcode = krb5_db_get_principal(kdc_context, request->server, s_flags, &server); + if (errcode == KRB5_KDB_CANTLOCK_DB) + errcode = KRB5KDC_ERR_SVC_UNAVAILABLE; if (errcode && errcode != KRB5_KDB_NOENTRY) { status = "LOOKING_UP_SERVER"; goto cleanup; @@ -1078,6 +1080,8 @@ find_alternate_tgs(krb5_kdc_req *request, krb5_db_entry **server_ptr) krb5_princ_set_realm(kdc_context, *pl2, krb5_princ_realm(kdc_context, tgs_server)); retval = krb5_db_get_principal(kdc_context, *pl2, 0, &server); + if (retval == KRB5_KDB_CANTLOCK_DB) + retval = KRB5KDC_ERR_SVC_UNAVAILABLE; krb5_princ_set_realm(kdc_context, *pl2, &tmp); if (retval == KRB5_KDB_NOENTRY) continue; |
