aboutsummaryrefslogtreecommitdiff
path: root/net/conserver/patches/002-addrsmatch-freeaddrinfo.patch
blob: 1d48c684fecd3fcf9d74aa8b500793eb4b7c491a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
--- 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) {