1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-27 03:21:53 +03:00

r2057: Although rarely used, prevent "net lookup kdc" from segfaulting when

using our own implementation of krb5_lookup_kdc with heimdal. Also,
heimdals krb5_krbhst_next() obviously does not retrieve the struct
addrinfo in the krb5_krbhst_info-struct, using
krb5_krbhst_get_addrinfo() instead.

Guenther
This commit is contained in:
Günther Deschner 2004-08-25 07:52:23 +00:00 committed by Gerald (Jerry) Carter
parent d7ea1ea8fb
commit cca660e109
2 changed files with 12 additions and 1 deletions

View File

@ -2758,6 +2758,7 @@ if test x"$with_ads_support" != x"no"; then
AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
LIBS="$LIBS $KRB5_LIBS"

View File

@ -190,6 +190,7 @@
krb5_error_code rc;
int num_kdcs, i;
struct sockaddr *sa;
struct addrinfo **ai;
*addr_pp = NULL;
*naddrs = 0;
@ -219,10 +220,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));
}