[tor-commits] [torsocks/master] Fix: gethostbyname IP address byte order

dgoulet at torproject.org dgoulet at torproject.org
Fri Apr 4 22:40:26 UTC 2014


commit c623b9899b133ac9ee24988445c0767902511caa
Author: David Goulet <dgoulet at ev0ke.net>
Date:   Fri Aug 23 11:48:26 2013 -0400

    Fix: gethostbyname IP address byte order
    
    The gethostbyname() call was not returning the IP address in network
    byte order as stated in the man page.
    
    Reported-by: Micah Anderson <micah at riseup.net>
    Signed-off-by: David Goulet <dgoulet at ev0ke.net>
---
 src/lib/gethostbyname.c |   12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/src/lib/gethostbyname.c b/src/lib/gethostbyname.c
index 3e3588e..bab01b0 100644
--- a/src/lib/gethostbyname.c
+++ b/src/lib/gethostbyname.c
@@ -34,7 +34,6 @@ LIBC_GETHOSTBYNAME_RET_TYPE tsocks_gethostbyname(LIBC_GETHOSTBYNAME_SIG)
 {
 	int ret;
 	uint32_t ip;
-	const char *ret_str;
 
 	DBG("[gethostbyname] Requesting %s hostname", __name);
 
@@ -54,12 +53,8 @@ LIBC_GETHOSTBYNAME_RET_TYPE tsocks_gethostbyname(LIBC_GETHOSTBYNAME_SIG)
 	memset(tsocks_he_addr_list, 0, sizeof(tsocks_he_addr_list));
 	memset(tsocks_he_addr, 0, sizeof(tsocks_he_addr));
 
-	ret_str = inet_ntop(AF_INET, &ip, tsocks_he_addr, sizeof(tsocks_he_addr));
-	if (!ret_str) {
-		PERROR("inet_ntop");
-		h_errno = NO_ADDRESS;
-		goto error;
-	}
+	/* Copy resolved network byte order IP address. */
+	memcpy(tsocks_he_addr, &ip, sizeof(tsocks_he_addr));
 
 	tsocks_he_addr_list[0] = tsocks_he_addr;
 	tsocks_he_addr_list[1] = NULL;
@@ -70,7 +65,8 @@ LIBC_GETHOSTBYNAME_RET_TYPE tsocks_gethostbyname(LIBC_GETHOSTBYNAME_SIG)
 	tsocks_he.h_addrtype = AF_INET;
 	tsocks_he.h_addr_list = tsocks_he_addr_list;
 
-	DBG("Hostname %s resolved to %s", __name, tsocks_he_addr);
+	DBG("Hostname %s resolved to %s", __name,
+			inet_ntoa(*((struct in_addr *) &ip)));
 
 	errno = 0;
 	return &tsocks_he;





More information about the tor-commits mailing list