summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2004-08-25 08:31:48 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:58:22 -0500
commite5c4c4b108370277458992a8f6d156317163fbb9 (patch)
tree95b655314eb790e06e1caf1b47e8cb6a007eac78
parent235a71fa3e9cc1223a6000beb8c775a0cfd14b5e (diff)
downloadsamba-e5c4c4b108370277458992a8f6d156317163fbb9.tar.gz
samba-e5c4c4b108370277458992a8f6d156317163fbb9.tar.bz2
samba-e5c4c4b108370277458992a8f6d156317163fbb9.zip
r2058: Merge heimdal krb5_locate_kdc-fix over from trunk/3_0 although
krb5_locate_kdc is (yet) an unused function in Samba4. Guenther (This used to be commit fe93f58dfe208ec814f1e75efde4ececa2b2cb5f)
-rw-r--r--source4/libads/config.m41
-rw-r--r--source4/libcli/auth/clikrb5.c12
2 files changed, 12 insertions, 1 deletions
diff --git a/source4/libads/config.m4 b/source4/libads/config.m4
index a98ac3189b..8c0cc5c121 100644
--- a/source4/libads/config.m4
+++ b/source4/libads/config.m4
@@ -289,6 +289,7 @@ if test x"$with_ads_support" != x"no"; then
AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
AC_CHECK_FUNC_EXT(krb5_ticket_get_authorization_data_type, $KRB5_LIBS)
+ AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
LIBS="$LIBS $KRB5_LIBS"
diff --git a/source4/libcli/auth/clikrb5.c b/source4/libcli/auth/clikrb5.c
index 0e4ec1f438..f6f8520b3c 100644
--- a/source4/libcli/auth/clikrb5.c
+++ b/source4/libcli/auth/clikrb5.c
@@ -181,6 +181,7 @@
krb5_error_code rc;
int num_kdcs, i;
struct sockaddr *sa;
+ struct addrinfo **ai;
*addr_pp = NULL;
*naddrs = 0;
@@ -210,10 +211,19 @@
return -1;
}
+ *addr_pp = malloc(sizeof(struct sockaddr) * num_kdcs);
memset(*addr_pp, '\0', sizeof(struct sockaddr) * num_kdcs );
for (i = 0; i < num_kdcs && (rc = krb5_krbhst_next(ctx, hnd, &hinfo) == 0); i++) {
- if (hinfo->ai->ai_family == AF_INET)
+
+#if defined(HAVE_KRB5_KRBHST_GET_ADDRINFO)
+ rc = krb5_krbhst_get_addrinfo(ctx, hinfo, ai);
+ if (rc) {
+ DEBUG(0,("krb5_krbhst_get_addrinfo failed: %s\n", error_message(rc)));
+ return rc;
+ }
+#endif
+ if (hinfo->ai && hinfo->ai->ai_family == AF_INET)
memcpy(&sa[i], hinfo->ai->ai_addr, sizeof(struct sockaddr));
}