OSDN Git Service

resolv: fix bug in res_init with ipv6 nameservers
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Fri, 17 Jun 2011 18:27:51 +0000 (20:27 +0200)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Fri, 17 Jun 2011 18:27:51 +0000 (20:27 +0200)
Thanks to Christian Krause <chkr plauener.de> for finding and fixing
this!

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
libc/inet/resolv.c

index e8b7f2b..dc8a752 100644 (file)
@@ -2964,7 +2964,7 @@ int res_init(void)
                if (__nameserver[i].sa.sa_family == AF_INET6
                 && m < ARRAY_SIZE(rp->_u._ext.nsaddrs)
                ) {
-                       struct sockaddr_in6 *sa6 = malloc(sizeof(sa6));
+                       struct sockaddr_in6 *sa6 = malloc(sizeof(*sa6));
                        if (sa6) {
                                *sa6 = __nameserver[i].sa6; /* struct copy */
                                rp->_u._ext.nsaddrs[m] = sa6;
@@ -2981,7 +2981,7 @@ int res_init(void)
 
 #else /* IPv6 only */
        while (m < ARRAY_SIZE(rp->_u._ext.nsaddrs) && i < __nameservers) {
-               struct sockaddr_in6 *sa6 = malloc(sizeof(sa6));
+               struct sockaddr_in6 *sa6 = malloc(sizeof(*sa6));
                if (sa6) {
                        *sa6 = __nameserver[i].sa6; /* struct copy */
                        rp->_u._ext.nsaddrs[m] = sa6;