diff options
Diffstat (limited to 'source4/heimdal_build')
-rw-r--r-- | source4/heimdal_build/config.mk | 2 | ||||
-rw-r--r-- | source4/heimdal_build/glue.c | 12 |
2 files changed, 11 insertions, 3 deletions
diff --git a/source4/heimdal_build/config.mk b/source4/heimdal_build/config.mk index ce5fa6e98e..b534c9bc9f 100644 --- a/source4/heimdal_build/config.mk +++ b/source4/heimdal_build/config.mk @@ -429,7 +429,7 @@ PUBLIC_DEPENDENCIES = \ [SUBSYSTEM::HEIMDAL_GLUE] CFLAGS = -Iheimdal_build -Iheimdal/lib/krb5 -Iheimdal/lib/asn1 -Iheimdal/lib/com_err OBJ_FILES = glue.o -PUBLIC_DEPENDENCIES = LIBNETIF +PUBLIC_DEPENDENCIES = LIBNETIF LIBSAMBA-CONFIG # End SUBSYSTEM HEIMDAL_GLUE ####################### diff --git a/source4/heimdal_build/glue.c b/source4/heimdal_build/glue.c index df08cae57c..07062ae8bf 100644 --- a/source4/heimdal_build/glue.c +++ b/source4/heimdal_build/glue.c @@ -31,22 +31,30 @@ krb5_error_code KRB5_LIB_FUNCTION krb5_get_all_client_addrs(krb5_context context, krb5_addresses *res) { int i; - res->len = iface_count(global_loadparm); + struct interface *ifaces; + + load_interfaces(NULL, lp_interfaces(global_loadparm), &ifaces); + + res->len = iface_count(ifaces); res->val = malloc_array_p(HostAddress, res->len); if (res->val == NULL) { + talloc_free(ifaces); return ENOMEM; } for (i=0;i<res->len;i++) { - const char *ip = iface_n_ip(global_loadparm, i); + const char *ip = iface_n_ip(ifaces, i); res->val[i].addr_type = AF_INET; res->val[i].address.length = 4; res->val[i].address.data = malloc(4); if (res->val[i].address.data == NULL) { + talloc_free(ifaces); return ENOMEM; } ((struct in_addr *)res->val[i].address.data)->s_addr = inet_addr(ip); } + talloc_free(ifaces); + return 0; } |