From 69e1fc797dc34be03d771ec017ef27c6aa87a155 Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=BCnther=20Deschner?= Date: Fri, 14 May 2010 23:23:34 +0200 Subject: [PATCH] s3-kerberos: pass down kdc_name to create_local_private_krb5_conf_for_domain(). Guenther (cherry picked from commit e3bdff3d67b46277ee59685218bd90f3788b487d) --- source3/include/proto.h | 3 ++- source3/libads/kerberos.c | 19 ++++++++++++------- source3/libsmb/namequery_dc.c | 6 ++++-- source3/winbindd/winbindd_cm.c | 6 ++++-- 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/source3/include/proto.h b/source3/include/proto.h index 34b9f83f2af..bd9665c274f 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -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 */ diff --git a/source3/libads/kerberos.c b/source3/libads/kerberos.c index f5f7f3d2e65..262be85aa37 100644 --- a/source3/libads/kerberos.c +++ b/source3/libads/kerberos.c @@ -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; } diff --git a/source3/libsmb/namequery_dc.c b/source3/libsmb/namequery_dc.c index 7b0748f86bb..68e399ad0b4 100644 --- a/source3/libsmb/namequery_dc.c +++ b/source3/libsmb/namequery_dc.c @@ -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 diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c index a0b4c9cd4ab..3b34a3275a8 100644 --- a/source3/winbindd/winbindd_cm.c +++ b/source3/winbindd/winbindd_cm.c @@ -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); -- 2.11.4.GIT