diff options
author | Denis Bilenko <denis.bilenko@gmail.com> | 2011-08-24 18:37:11 +0200 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2011-08-24 18:37:11 +0200 |
commit | 1f8f14d21ebfcddd18c6c7ba7c74a160b64575ac (patch) | |
tree | 737416d01e841f6a302b8d08537b454852d939ae | |
parent | c8d8ca26060299258182bdee388011fcc53f23cc (diff) | |
download | c-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.
-rw-r--r-- | ares_getnameinfo.c | 4 |
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); |