diff options
-rw-r--r-- | lib/libc/net/map_v4v6.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/lib/libc/net/map_v4v6.c b/lib/libc/net/map_v4v6.c index 09b035b..5cfe817 100644 --- a/lib/libc/net/map_v4v6.c +++ b/lib/libc/net/map_v4v6.c @@ -78,19 +78,15 @@ typedef union { void _map_v4v6_address(const char *src, char *dst) { - u_char *p = (u_char *)dst; char tmp[NS_INADDRSZ]; - int i; /* Stash a temporary copy so our caller can update in place. */ memcpy(tmp, src, NS_INADDRSZ); /* Mark this ipv6 addr as a mapped ipv4. */ - for (i = 0; i < 10; i++) - *p++ = 0x00; - *p++ = 0xff; - *p++ = 0xff; + memset(&dst[0], 0, 10); + memset(&dst[10], 0xff, 2); /* Retrieve the saved copy and we're done. */ - memcpy((void*)p, tmp, NS_INADDRSZ); + memcpy(&dst[12], tmp, NS_INADDRSZ); } void |