d985507
diff -rup a/resolv/res_init.c b/resolv/res_init.c
d985507
--- a/resolv/res_init.c	2012-07-26 15:10:45.655638776 -0600
d985507
+++ b/resolv/res_init.c	2012-07-26 15:11:27.731423002 -0600
d985507
@@ -314,9 +314,9 @@ __res_vinit(res_state statp, int preinit
d985507
 			cp++;
d985507
 		    if ((*cp != '\0') && (*cp != '\n')
d985507
 			&& __inet_aton(cp, &a)) {
d985507
-			statp->nsaddr_list[nservall].sin_addr = a;
d985507
-			statp->nsaddr_list[nservall].sin_family = AF_INET;
d985507
-			statp->nsaddr_list[nservall].sin_port =
d985507
+			statp->nsaddr_list[nserv].sin_addr = a;
d985507
+			statp->nsaddr_list[nserv].sin_family = AF_INET;
d985507
+			statp->nsaddr_list[nserv].sin_port =
d985507
 				htons(NAMESERVER_PORT);
d985507
 			nserv++;
d985507
 #ifdef _LIBC
e7456d7
diff -rup a/resolv/res_send.c b/resolv/res_send.c
e7456d7
--- a/resolv/res_send.c	2010-05-04 05:27:23.000000000 -0600
d985507
+++ b/resolv/res_send.c	2012-07-26 15:34:58.398261659 -0600
d985507
@@ -421,10 +421,10 @@ __libc_res_nsend(res_state statp, const
d985507
 				EXT(statp).nsmap[n] = MAXNS;
d985507
 			}
d985507
 		}
d985507
-		n = statp->nscount;
d985507
-		if (statp->nscount > EXT(statp).nscount)
d985507
+		n = statp->nscount - EXT(statp).nscount6;
d985507
+		if (n > EXT(statp).nscount)
d985507
 			for (n = EXT(statp).nscount, ns = 0;
d985507
-			     n < statp->nscount; n++) {
d985507
+			     n < statp->nscount - EXT(statp).nscount6; n++) {
d985507
 				while (ns < MAXNS
d985507
 				       && EXT(statp).nsmap[ns] != MAXNS)
d985507
 					ns++;
e7456d7
@@ -441,7 +441,7 @@ __libc_res_nsend(res_state statp, const
e7456d7
 				    malloc(sizeof (struct sockaddr_in6));
e7456d7
 			if (EXT(statp).nsaddrs[n] != NULL) {
e7456d7
 				memset (mempcpy(EXT(statp).nsaddrs[n],
e7456d7
-						&statp->nsaddr_list[n],
e7456d7
+						&statp->nsaddr_list[ns],
e7456d7
 						sizeof (struct sockaddr_in)),
e7456d7
 					'\0',
e7456d7
 					sizeof (struct sockaddr_in6)