]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Fix KDC client referrals
authorGreg Hudson <ghudson@mit.edu>
Thu, 3 Sep 2015 16:38:44 +0000 (12:38 -0400)
committerTom Yu <tlyu@mit.edu>
Wed, 9 Dec 2015 22:27:41 +0000 (17:27 -0500)
Although our built-in KDB modules do not support client referrals for
AS requests, the KDC is supposed to return one if a third-party module
returns a DB entry containing a principal in a foreign realm.
Unfortunately, this code has never worked; in prepare_error_as(), we
erroneously compare the protocol code errcode against the com_err code
KRB5KDC_ERR_WRONG_REALM; as a result, we never supply the canonical
client principal.  Fix this by comparing errcode against the protocol
code KDC_ERR_WRONG_REALM instead.

Discovered by Alexander Bokovoy and Simo Sorce.

(cherry picked from commit 4e036ef4127a9b09d1a567472da1df24c55cdb89)

ticket: 8312 (new)
version_fixed: 1.12.5
status: resolved

src/kdc/do_as_req.c

index 95c3e236201d1131b453a6f37f1f99fcf5f9b8b9..fa54c5daae8b70b4abe70ce4d445fcdf2d678758 100644 (file)
@@ -805,7 +805,7 @@ prepare_error_as (struct kdc_request_state *rstate, krb5_kdc_req *request,
         return retval;
     errpkt.error = error;
     errpkt.server = request->server;
-    errpkt.client = (error == KRB5KDC_ERR_WRONG_REALM) ? canon_client :
+    errpkt.client = (error == KDC_ERR_WRONG_REALM) ? canon_client :
         request->client;
     errpkt.text = string2data((char *)status);