(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
This commit is contained in:
@@ -787,11 +787,20 @@ krb5_parse_address(krb5_context context,
|
|||||||
++n;
|
++n;
|
||||||
|
|
||||||
ALLOC_SEQ(addresses, 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) {
|
for (a = ai, i = 0; a != NULL; a = a->ai_next) {
|
||||||
if(krb5_sockaddr2address (context, ai->ai_addr,
|
if (krb5_sockaddr2address (context, ai->ai_addr, &addresses->val[i]))
|
||||||
&addresses->val[i]) == 0)
|
continue;
|
||||||
i++;
|
if(krb5_address_search(context, &addresses->val[i], addresses))
|
||||||
|
continue;
|
||||||
|
addresses->len = i;
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
freeaddrinfo (ai);
|
freeaddrinfo (ai);
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user