Blame SOURCES/nspr-4.34-fix-coverity-loop-issue.patch

c6aa5d
diff --git a/pr/src/misc/prnetdb.c b/pr/src/misc/prnetdb.c
c6aa5d
--- a/pr/src/misc/prnetdb.c
c6aa5d
+++ b/pr/src/misc/prnetdb.c
c6aa5d
@@ -2209,28 +2209,38 @@ PR_GetPrefLoopbackAddrInfo(PRNetAddr *re
c6aa5d
         PRBool result_still_empty = PR_TRUE;
c6aa5d
         PRADDRINFO *ai = res;
c6aa5d
         do {
c6aa5d
             PRNetAddr aNetAddr;
c6aa5d
 
c6aa5d
             while (ai && ai->ai_addrlen > sizeof(PRNetAddr))
c6aa5d
                 ai = ai->ai_next;
c6aa5d
 
c6aa5d
-            if (ai) {
c6aa5d
-                /* copy sockaddr to PRNetAddr */
c6aa5d
-                memcpy(&aNetAddr, ai->ai_addr, ai->ai_addrlen);
c6aa5d
-                aNetAddr.raw.family = ai->ai_addr->sa_family;
c6aa5d
+            if (!ai) {
c6aa5d
+                break;
c6aa5d
+            }
c6aa5d
+
c6aa5d
+            /* copy sockaddr to PRNetAddr */
c6aa5d
+            memcpy(&aNetAddr, ai->ai_addr, ai->ai_addrlen);
c6aa5d
+            aNetAddr.raw.family = ai->ai_addr->sa_family;
c6aa5d
 #ifdef _PR_INET6
c6aa5d
-                if (AF_INET6 == aNetAddr.raw.family)
c6aa5d
-                    aNetAddr.raw.family = PR_AF_INET6;
c6aa5d
+            if (AF_INET6 == aNetAddr.raw.family)
c6aa5d
+                aNetAddr.raw.family = PR_AF_INET6;
c6aa5d
 #endif
c6aa5d
-                if (ai->ai_addrlen < sizeof(PRNetAddr))
c6aa5d
-                    memset(((char*)result)+ai->ai_addrlen, 0,
c6aa5d
-                           sizeof(PRNetAddr) - ai->ai_addrlen);
c6aa5d
+            if (ai->ai_addrlen < sizeof(PRNetAddr))
c6aa5d
+                memset(((char*)&aNetAddr)+ai->ai_addrlen, 0,
c6aa5d
+                       sizeof(PRNetAddr) - ai->ai_addrlen);
c6aa5d
+
c6aa5d
+            if (result->raw.family == PR_AF_INET) {
c6aa5d
+                aNetAddr.inet.port = htons(port);
c6aa5d
             }
c6aa5d
+            else {
c6aa5d
+                aNetAddr.ipv6.port = htons(port);
c6aa5d
+            }
c6aa5d
+
c6aa5d
 
c6aa5d
             /* If we obtain more than one result, prefer IPv6. */
c6aa5d
             if (result_still_empty || aNetAddr.raw.family == PR_AF_INET6) {
c6aa5d
                 memcpy(result, &aNetAddr, sizeof(PRNetAddr));
c6aa5d
             }
c6aa5d
             result_still_empty = PR_FALSE;
c6aa5d
             ai = ai->ai_next;
c6aa5d
         }