summaryrefslogtreecommitdiff
path: root/ares_getnameinfo.c
diff options
context:
space:
mode:
authorDenis Bilenko <denis.bilenko@gmail.com>2011-08-24 18:37:11 +0200
committerYang Tse <yangsita@gmail.com>2011-08-24 18:37:11 +0200
commit1f8f14d21ebfcddd18c6c7ba7c74a160b64575ac (patch)
tree737416d01e841f6a302b8d08537b454852d939ae /ares_getnameinfo.c
parentc8d8ca26060299258182bdee388011fcc53f23cc (diff)
downloadc-ares-1f8f14d21ebfcddd18c6c7ba7c74a160b64575ac.tar.gz
c-ares-1f8f14d21ebfcddd18c6c7ba7c74a160b64575ac.tar.bz2
c-ares-1f8f14d21ebfcddd18c6c7ba7c74a160b64575ac.zip
ares_getnameinfo: fix random results with c-ares 1.7.5
In ares_getnameinfo memcpy did not copy enough bytes, causing it to return arbitrary memory contents as a result.
Diffstat (limited to 'ares_getnameinfo.c')
-rw-r--r--ares_getnameinfo.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ares_getnameinfo.c b/ares_getnameinfo.c
index 82e261d..cdcd516 100644
--- a/ares_getnameinfo.c
+++ b/ares_getnameinfo.c
@@ -188,7 +188,7 @@ void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa,
if (sa->sa_family == AF_INET)
{
niquery->family = AF_INET;
- memcpy(&niquery->addr.addr4, addr, sizeof(struct in_addr));
+ memcpy(&niquery->addr.addr4, addr, sizeof(niquery->addr.addr4));
ares_gethostbyaddr(channel, &addr->sin_addr,
sizeof(struct in_addr), AF_INET,
nameinfo_callback, niquery);
@@ -196,7 +196,7 @@ void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa,
else
{
niquery->family = AF_INET6;
- memcpy(&niquery->addr.addr6, addr6, sizeof(struct ares_in6_addr));
+ memcpy(&niquery->addr.addr6, addr6, sizeof(niquery->addr.addr6));
ares_gethostbyaddr(channel, &addr6->sin6_addr,
sizeof(struct ares_in6_addr), AF_INET6,
nameinfo_callback, niquery);