aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ares/inet_ntop.c12
-rw-r--r--lib/inet_ntop.c9
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)