Author: gd
Date: 2004-08-25 08:31:48 +0000 (Wed, 25 Aug 2004)
New Revision: 2058

WebSVN: 
http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source&rev=2058&nolog=1

Log:
Merge heimdal krb5_locate_kdc-fix over from trunk/3_0 although
krb5_locate_kdc is (yet) an unused function in Samba4.

Guenther

Modified:
   branches/SAMBA_4_0/source/libads/config.m4
   branches/SAMBA_4_0/source/libcli/auth/clikrb5.c


Changeset:
Modified: branches/SAMBA_4_0/source/libads/config.m4
===================================================================
--- branches/SAMBA_4_0/source/libads/config.m4  2004-08-25 07:52:23 UTC (rev 2057)
+++ branches/SAMBA_4_0/source/libads/config.m4  2004-08-25 08:31:48 UTC (rev 2058)
@@ -289,6 +289,7 @@
   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"
   

Modified: branches/SAMBA_4_0/source/libcli/auth/clikrb5.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/auth/clikrb5.c     2004-08-25 07:52:23 UTC (rev 
2057)
+++ branches/SAMBA_4_0/source/libcli/auth/clikrb5.c     2004-08-25 08:31:48 UTC (rev 
2058)
@@ -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));
        }
 

Reply via email to