diff options
-rw-r--r-- | ares/inet_ntop.c | 12 | ||||
-rw-r--r-- | lib/inet_ntop.c | 9 |
2 files changed, 16 insertions, 5 deletions
diff --git a/ares/inet_ntop.c b/ares/inet_ntop.c index 74192c1a8..9902391d1 100644 --- a/ares/inet_ntop.c +++ b/ares/inet_ntop.c @@ -129,8 +129,12 @@ inet_ntop6(const unsigned char *src, char *dst, size_t size) * Keep this in mind if you think this function should have been coded * to use pointer overlays. All the world's not a VAX. */ - char tmp[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"], *tp; - struct { int base, len; } best = { 0,0 }, cur = { 0,0 }; + char tmp[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")]; + char *tp; + struct { + long base; + long len; + } best, cur; unsigned int words[NS_IN6ADDRSZ / NS_INT16SZ]; int i; @@ -142,8 +146,12 @@ inet_ntop6(const unsigned char *src, char *dst, size_t size) memset(words, '\0', sizeof words); for (i = 0; i < NS_IN6ADDRSZ; i++) words[i / 2] |= (src[i] << ((1 - (i % 2)) << 3)); + best.base = -1; cur.base = -1; + best.len = 0; + cur.len = 0; + for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++) { if (words[i] == 0) diff --git a/lib/inet_ntop.c b/lib/inet_ntop.c index c3b55c02d..b6c9716d4 100644 --- a/lib/inet_ntop.c +++ b/lib/inet_ntop.c @@ -106,14 +106,14 @@ static char *inet_ntop6 (const unsigned char *src, char *dst, size_t size) * Keep this in mind if you think this function should have been coded * to use pointer overlays. All the world's not a VAX. */ - char tmp [sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")]; + char tmp[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")]; char *tp; struct { long base; long len; } best, cur; - u_long words [IN6ADDRSZ / INT16SZ]; - int i; + unsigned long words[IN6ADDRSZ / INT16SZ]; + int i; /* Preprocess: * Copy the input (bytewise) array into a wordwise array. @@ -125,6 +125,9 @@ static char *inet_ntop6 (const unsigned char *src, char *dst, size_t size) best.base = -1; cur.base = -1; + best.len = 0; + cur.len = 0; + for (i = 0; i < (IN6ADDRSZ / INT16SZ); i++) { if (words[i] == 0) |