s3-kerberos: pass down kdc_name to create_local_private_krb5_conf_for_domain().
authorGünther Deschner <gd@samba.org>
Fri, 14 May 2010 21:23:34 +0000 (23:23 +0200)
committerKarolin Seeger <kseeger@samba.org>
Thu, 13 Jan 2011 16:58:49 +0000 (17:58 +0100)
Guenther
(cherry picked from commit e3bdff3d67b46277ee59685218bd90f3788b487d)
(cherry picked from commit 69e1fc797dc34be03d771ec017ef27c6aa87a155)

source3/include/proto.h
source3/libads/kerberos.c
source3/libsmb/namequery_dc.c
source3/winbindd/winbindd_cm.c

index 34b9f83f2af23da83052796f25d67b314af59a57..bd9665c274f8e7f0a2c7b27ce8bc950a29b230ce 100644 (file)
@@ -1790,7 +1790,8 @@ int kerberos_kinit_password(const char *principal,
 bool create_local_private_krb5_conf_for_domain(const char *realm,
                                                const char *domain,
                                                const char *sitename,
-                                               struct sockaddr_storage *pss);
+                                               struct sockaddr_storage *pss,
+                                               const char *kdc_name);
 
 /* The following definitions come from libads/kerberos_keytab.c  */
 
index f5f7f3d2e651c119268ad2454a976fde97d4b55b..262be85aa3739072522725ad927ae6dc2f8df717 100644 (file)
@@ -663,7 +663,8 @@ int kerberos_kinit_password(const char *principal,
 
 static char *print_kdc_line(char *mem_ctx,
                        const char *prev_line,
-                       const struct sockaddr_storage *pss)
+                       const struct sockaddr_storage *pss,
+                       const char *kdc_name)
 {
        char *kdc_str = NULL;
 
@@ -720,14 +721,15 @@ static char *print_kdc_line(char *mem_ctx,
 static char *get_kdc_ip_string(char *mem_ctx,
                const char *realm,
                const char *sitename,
-               struct sockaddr_storage *pss)
+               struct sockaddr_storage *pss,
+               const char *kdc_name)
 {
        int i;
        struct ip_service *ip_srv_site = NULL;
        struct ip_service *ip_srv_nonsite = NULL;
        int count_site = 0;
        int count_nonsite;
-       char *kdc_str = print_kdc_line(mem_ctx, "", pss);
+       char *kdc_str = print_kdc_line(mem_ctx, "", pss, kdc_name);
 
        if (kdc_str == NULL) {
                return NULL;
@@ -751,7 +753,8 @@ static char *get_kdc_ip_string(char *mem_ctx,
                         * but not done often. */
                        kdc_str = print_kdc_line(mem_ctx,
                                                kdc_str,
-                                               &ip_srv_site[i].ss);
+                                               &ip_srv_site[i].ss,
+                                               NULL);
                        if (!kdc_str) {
                                SAFE_FREE(ip_srv_site);
                                return NULL;
@@ -788,7 +791,8 @@ static char *get_kdc_ip_string(char *mem_ctx,
                /* Append to the string - inefficient but not done often. */
                kdc_str = print_kdc_line(mem_ctx,
                                kdc_str,
-                               &ip_srv_nonsite[i].ss);
+                               &ip_srv_nonsite[i].ss,
+                               NULL);
                if (!kdc_str) {
                        SAFE_FREE(ip_srv_site);
                        SAFE_FREE(ip_srv_nonsite);
@@ -816,7 +820,8 @@ static char *get_kdc_ip_string(char *mem_ctx,
 bool create_local_private_krb5_conf_for_domain(const char *realm,
                                                const char *domain,
                                                const char *sitename,
-                                               struct sockaddr_storage *pss)
+                                               struct sockaddr_storage *pss,
+                                               const char *kdc_name)
 {
        char *dname = lock_path("smb_krb5");
        char *tmpname = NULL;
@@ -855,7 +860,7 @@ bool create_local_private_krb5_conf_for_domain(const char *realm,
        realm_upper = talloc_strdup(fname, realm);
        strupper_m(realm_upper);
 
-       kdc_ip_string = get_kdc_ip_string(dname, realm, sitename, pss);
+       kdc_ip_string = get_kdc_ip_string(dname, realm, sitename, pss, kdc_name);
        if (!kdc_ip_string) {
                goto done;
        }
index 7b0748f86bbdcf4e7ee52e96aa6e04ea61c47ef8..68e399ad0b45d430f5e7f0d9b3b8bb4d1da67099 100644 (file)
@@ -108,12 +108,14 @@ static bool ads_dc_name(const char *domain,
                                create_local_private_krb5_conf_for_domain(realm,
                                                                        domain,
                                                                        sitename,
-                                                                       &ads->ldap.ss);
+                                                                       &ads->ldap.ss,
+                                                                       ads->config.ldap_server_name);
                        } else {
                                create_local_private_krb5_conf_for_domain(realm,
                                                                        domain,
                                                                        NULL,
-                                                                       &ads->ldap.ss);
+                                                                       &ads->ldap.ss,
+                                                                       ads->config.ldap_server_name);
                        }
                }
 #endif
index a0b4c9cd4abb6139f4117e6520195130def5d402..3b34a3275a8edb2ec415b806cc72cb9287e73845 100644 (file)
@@ -1136,7 +1136,8 @@ static bool dcip_to_name(TALLOC_CTX *mem_ctx,
                                        create_local_private_krb5_conf_for_domain(domain->alt_name,
                                                                        domain->name,
                                                                        sitename,
-                                                                       pss);
+                                                                       pss,
+                                                                       name);
 
                                        SAFE_FREE(sitename);
                                } else {
@@ -1144,7 +1145,8 @@ static bool dcip_to_name(TALLOC_CTX *mem_ctx,
                                        create_local_private_krb5_conf_for_domain(domain->alt_name,
                                                                        domain->name,
                                                                        NULL,
-                                                                       pss);
+                                                                       pss,
+                                                                       name);
                                }
                                winbindd_set_locator_kdc_envs(domain);