r6700: Upper case realms in kerberos-specific parts of the code, as this is
authorAndrew Bartlett <abartlet@samba.org>
Tue, 10 May 2005 09:51:55 +0000 (09:51 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:16:35 +0000 (13:16 -0500)
no longer done globally.

This keeps MIT client libraries happy, because otherwise the windows
KDC will return a different case to what was requested.

Andrew Bartlett

source/auth/gensec/gensec_krb5.c
source/lib/credentials.c

index 93d82a33a1d52e65b5346dd89f92b751dc6fdb5c..c850d93fce825e5126ac5ab3bf92fe73365efc48 100644 (file)
@@ -284,7 +284,12 @@ static NTSTATUS gensec_krb5_start(struct gensec_security *gensec_security)
        }
 
        if (lp_realm() && *lp_realm()) {
-               ret = krb5_set_default_realm(gensec_krb5_state->context, lp_realm());
+               char *upper_realm = strupper_talloc(gensec_krb5_state, lp_realm());
+               if (!upper_realm) {
+                       DEBUG(1,("gensec_krb5_start: could not uppercase realm: %s\n", lp_realm()));
+                       return NT_STATUS_NO_MEMORY;
+               }
+               ret = krb5_set_default_realm(gensec_krb5_state->context, upper_realm);
                if (ret) {
                        DEBUG(1,("gensec_krb5_start: krb5_set_default_realm failed (%s)\n", error_message(ret)));
                        return NT_STATUS_INTERNAL_ERROR;
index 7e25fc780befcdacea88fe379e45b49939d37c49..ed9a9788abe81800f5d2736367fcfcf812cbe4eb 100644 (file)
@@ -175,10 +175,14 @@ char *cli_credentials_get_principal(struct cli_credentials *cred,
                               cli_credentials_get_realm(cred));
 }
 
+/**
+ * Set the realm for this credentials context, and force it to
+ * uppercase for the sainity of our local kerberos libraries 
+ */
 BOOL cli_credentials_set_realm(struct cli_credentials *cred, const char *val, enum credentials_obtained obtained)
 {
        if (obtained >= cred->realm_obtained) {
-               cred->realm = talloc_strdup(cred, val);
+               cred->realm = strupper_talloc(cred, val);
                cred->realm_obtained = obtained;
                return True;
        }