From 91d86cd656c3cbddc0c64222e9d905ba0262a180 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Sat, 15 Jun 2013 08:52:48 +0800 Subject: [PATCH] use ntop instead --- configure.ac | 5 ++--- m4/inet_aton.m4 | 41 ----------------------------------------- m4/inet_ntoa.m4 | 41 ----------------------------------------- m4/inet_ntop.m4 | 41 +++++++++++++++++++++++++++++++++++++++++ src/local.c | 2 +- src/server.c | 4 ++-- 6 files changed, 46 insertions(+), 88 deletions(-) delete mode 100644 m4/inet_aton.m4 delete mode 100644 m4/inet_ntoa.m4 create mode 100644 m4/inet_ntop.m4 diff --git a/configure.ac b/configure.ac index f1419332..3ebe1589 100755 --- a/configure.ac +++ b/configure.ac @@ -22,9 +22,8 @@ m4_include([libev/libev.m4]) dnl Checks for openssl ss_OPENSSL -dnl Checks for inet_aton and inet_ntoa -ss_FUNC_INET_ATON -ss_FUNC_INET_NTOA +dnl Checks for inet_ntop +ss_FUNC_INET_NTOP dnl Checks for host. AC_MSG_CHECKING(for what kind of host) diff --git a/m4/inet_aton.m4 b/m4/inet_aton.m4 deleted file mode 100644 index 59072bb6..00000000 --- a/m4/inet_aton.m4 +++ /dev/null @@ -1,41 +0,0 @@ -# inet_aton.m4 serial 19 -dnl Copyright (C) 2005-2006, 2008-2013 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -AC_DEFUN([ss_FUNC_INET_ATON], -[ - AC_REQUIRE([AC_C_RESTRICT]) - - dnl Most platforms that provide inet_aton define it in libc. - dnl Solaris 8..10 provide inet_aton in libnsl instead. - dnl Solaris 2.6..7 provide inet_aton in libresolv instead. - HAVE_INET_ATON=1 - INET_ATON_LIB= - ss_save_LIBS=$LIBS - AC_SEARCH_LIBS([inet_aton], [nsl resolv], [], - [AC_CHECK_FUNCS([inet_aton]) - if test $ac_cv_func_inet_aton = no; then - HAVE_INET_ATON=0 - fi - ]) - LIBS=$ss_save_LIBS - - if test "$ac_cv_search_inet_aton" != "no" \ - && test "$ac_cv_search_inet_aton" != "none required"; then - INET_ATON_LIB="$ac_cv_search_inet_aton" - fi - - AC_CHECK_HEADERS_ONCE([netdb.h]) - AC_CHECK_DECLS([inet_aton],,, - [[#include - #if HAVE_NETDB_H - # include - #endif - ]]) - if test $ac_cv_have_decl_inet_aton = no; then - HAVE_DECL_INET_ATON=0 - fi - AC_SUBST([INET_ATON_LIB]) -]) diff --git a/m4/inet_ntoa.m4 b/m4/inet_ntoa.m4 deleted file mode 100644 index 8fe331ef..00000000 --- a/m4/inet_ntoa.m4 +++ /dev/null @@ -1,41 +0,0 @@ -# inet_ntoa.m4 serial 19 -dnl Copyright (C) 2005-2006, 2008-2013 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -AC_DEFUN([ss_FUNC_INET_NTOA], -[ - AC_REQUIRE([AC_C_RESTRICT]) - - dnl Most platforms that provide inet_ntoa define it in libc. - dnl Solaris 8..10 provide inet_ntoa in libnsl instead. - dnl Solaris 2.6..7 provide inet_ntoa in libresolv instead. - HAVE_INET_NTOA=1 - INET_NTOA_LIB= - ss_save_LIBS=$LIBS - AC_SEARCH_LIBS([inet_ntoa], [nsl resolv], [], - [AC_CHECK_FUNCS([inet_ntoa]) - if test $ac_cv_func_inet_ntoa = no; then - HAVE_INET_NTOA=0 - fi - ]) - LIBS=$ss_save_LIBS - - if test "$ac_cv_search_inet_ntoa" != "no" \ - && test "$ac_cv_search_inet_ntoa" != "none required"; then - INET_NTOA_LIB="$ac_cv_search_inet_ntoa" - fi - - AC_CHECK_HEADERS_ONCE([netdb.h]) - AC_CHECK_DECLS([inet_ntoa],,, - [[#include - #if HAVE_NETDB_H - # include - #endif - ]]) - if test $ac_cv_have_decl_inet_ntoa = no; then - HAVE_DECL_INET_NTOA=0 - fi - AC_SUBST([INET_NTOA_LIB]) -]) diff --git a/m4/inet_ntop.m4 b/m4/inet_ntop.m4 new file mode 100644 index 00000000..adb439b4 --- /dev/null +++ b/m4/inet_ntop.m4 @@ -0,0 +1,41 @@ +# inet_ntop.m4 serial 19 +dnl Copyright (C) 2005-2006, 2008-2013 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([ss_FUNC_INET_NTOP], +[ + AC_REQUIRE([AC_C_RESTRICT]) + + dnl Most platforms that provide inet_ntop define it in libc. + dnl Solaris 8..10 provide inet_ntop in libnsl instead. + dnl Solaris 2.6..7 provide inet_ntop in libresolv instead. + HAVE_INET_NTOP=1 + INET_NTOP_LIB= + ss_save_LIBS=$LIBS + AC_SEARCH_LIBS([inet_ntop], [nsl resolv], [], + [AC_CHECK_FUNCS([inet_ntop]) + if test $ac_cv_func_inet_ntop = no; then + HAVE_INET_NTOP=0 + fi + ]) + LIBS=$ss_save_LIBS + + if test "$ac_cv_search_inet_ntop" != "no" \ + && test "$ac_cv_search_inet_ntop" != "none required"; then + INET_NTOP_LIB="$ac_cv_search_inet_ntop" + fi + + AC_CHECK_HEADERS_ONCE([netdb.h]) + AC_CHECK_DECLS([inet_ntop],,, + [[#include + #if HAVE_NETDB_H + # include + #endif + ]]) + if test $ac_cv_have_decl_inet_ntop = no; then + HAVE_DECL_INET_NTOP=0 + fi + AC_SUBST([INET_NTOP_LIB]) +]) diff --git a/src/local.c b/src/local.c index 5b2f6b95..f05e1ddf 100644 --- a/src/local.c +++ b/src/local.c @@ -240,7 +240,7 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) { response.atyp = 1; struct in_addr sin_addr; - inet_aton("0.0.0.0", &sin_addr); + memset(&sin_addr, 0, sizeof(struct in_addr)); memcpy(server->buf, &response, sizeof(struct socks5_response)); memset(server->buf + sizeof(struct socks5_response), 0, sizeof(struct in_addr) + sizeof(uint16_t)); diff --git a/src/server.c b/src/server.c index 582e4fce..b848c18a 100644 --- a/src/server.c +++ b/src/server.c @@ -220,8 +220,8 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) { // IP V4 size_t in_addr_len = sizeof(struct in_addr); if (r > in_addr_len) { - char *a = inet_ntoa(*(struct in_addr*)(server->buf + offset)); - memcpy(host, a, strlen(a)); + inet_ntop(AF_INET, (void *)server->buf[offset], + host, in_addr_len); offset += in_addr_len; }