--- a/conserver/consent.c +++ b/conserver/consent.c @@ -1269,7 +1269,7 @@ AddrsMatch(char *addr1, char *addr2) { #if USE_IPV6 int error, ret = 0; - struct addrinfo *ai1, *ai2, hints; + struct addrinfo *ai1, *ai2, *rp1, *rp2, hints; #else /* so, since we might use inet_addr, we're going to use * (in_addr_t)(-1) as a sign of an invalid ip address. @@ -1307,17 +1307,19 @@ AddrsMatch(char *addr1, char *addr2) goto done; } - for (; ai1 != NULL; ai1 = ai1->ai_next) { - for (; ai2 != NULL; ai2 = ai2->ai_next) { - if (ai1->ai_addr->sa_family != ai2->ai_addr->sa_family) + rp1 = ai1; + rp2 = ai2; + for (; rp1 != NULL; rp1 = rp1->ai_next) { + for (; rp2 != NULL; rp2 = rp2->ai_next) { + if (rp1->ai_addr->sa_family != rp2->ai_addr->sa_family) continue; if ( # if HAVE_MEMCMP - memcmp(&ai1->ai_addr, &ai2->ai_addr, + memcmp(&rp1->ai_addr, &rp2->ai_addr, sizeof(struct sockaddr_storage)) # else - bcmp(&ai1->ai_addr, &ai2->ai_addr, + bcmp(&rp1->ai_addr, &rp2->ai_addr, sizeof(struct sockaddr_storage)) # endif == 0) {