From 69a18af8ac08c5829a6ede061c61a10c78150ab1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Wed, 5 Jan 2005 17:36:11 +0000 Subject: [PATCH] (krb5_parse_address): filter out dup addresses from getaddrinfo git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@14479 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/addr_families.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/krb5/addr_families.c b/lib/krb5/addr_families.c index a409e5fb3..df3d157d4 100644 --- a/lib/krb5/addr_families.c +++ b/lib/krb5/addr_families.c @@ -787,11 +787,20 @@ krb5_parse_address(krb5_context context, ++n; ALLOC_SEQ(addresses, n); + if (addresses->val == NULL) { + krb5_set_error_string(context, "malloc: out of memory"); + freeaddrinfo(ai); + return ENOMEM; + } + addresses->len = 0; for (a = ai, i = 0; a != NULL; a = a->ai_next) { - if(krb5_sockaddr2address (context, ai->ai_addr, - &addresses->val[i]) == 0) - i++; + if (krb5_sockaddr2address (context, ai->ai_addr, &addresses->val[i])) + continue; + if(krb5_address_search(context, &addresses->val[i], addresses)) + continue; + addresses->len = i; + i++; } freeaddrinfo (ai); return 0;