commit e6cf978c7cc2251564e8547e201b3f74a715a87e Author: Zack Weinberg zackw@panix.com Date: Thu Jul 7 16:40:21 2011 -0700
Low-hanging portability fixes.
* Modernize Makefile.am and configure.ac. * Remove a whole bunch of checks from configure.ac that probably were unnecessary and the code wasn't bothering to pay attention to, anyway. * Make the configure script agree with the code on the way to detect Windows. * Remove an unnecessary Windows #ifdef block. * Define SIZE_T_CEILING in a way that doesn't need a configure check. * GCC uninitialized-variable warning fix in the test suite. --- Makefile.am | 8 +++----- configure.ac | 42 +++++++++++++++++++----------------------- src/test/unittest_socks.c | 1 + src/util.c | 8 ++++---- src/util.h | 15 --------------- 5 files changed, 27 insertions(+), 47 deletions(-)
diff --git a/Makefile.am b/Makefile.am index 614748f..eb32bdc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,7 +1,7 @@ -AUTOMAKE_OPTIONS = foreign -ACLOCAL_AMFLAGS = -I m4 -CFLAGS = -DDEBUG -g -Wall -O2 -Werror @libevent_CFLAGS@ @openssl_CFLAGS@
+ACLOCAL_AMFLAGS = -I m4 +AM_CFLAGS = -DDEBUG -Wall -Werror @libevent_CFLAGS@ @openssl_CFLAGS@ +LDADD = libobfsproxy.a @libevent_LIBS@ @openssl_LIBS@ @ws32_LIBS@
bin_PROGRAMS = obfsproxy noinst_LIBRARIES = libobfsproxy.a @@ -18,7 +18,6 @@ libobfsproxy_a_SOURCES = \
obfsproxy_SOURCES = \ src/main.c -obfsproxy_LDADD = libobfsproxy.a @libevent_LIBS@ @openssl_LIBS@ @LIB_WS32@
unittests_SOURCES = \ src/test/tinytest.c \ @@ -26,7 +25,6 @@ unittests_SOURCES = \ src/test/unittest_obfs2.c \ src/test/unittest_crypt.c \ src/test/unittest_socks.c -unittests_LDADD = libobfsproxy.a @libevent_LIBS@ @openssl_LIBS@ @LIB_WS32@
noinst_HEADERS = \ src/network.h \ diff --git a/configure.ac b/configure.ac index c799d61..e49ddf3 100644 --- a/configure.ac +++ b/configure.ac @@ -1,34 +1,30 @@ -AC_INIT -AM_INIT_AUTOMAKE(obsproxy, 0.0) -AM_CONFIG_HEADER(config.h) +AC_PREREQ([2.67])dnl Possibly earlier will do, but this is what I have +AC_INIT([obsproxy], [0.0]) +AC_CONFIG_SRCDIR([src/main.c])
-AC_CANONICAL_HOST +AM_INIT_AUTOMAKE([foreign])
-AC_PROG_GCC_TRADITIONAL -AC_PROG_SED +AC_PROG_CC +AC_PROG_CPP AC_PROG_RANLIB PKG_PROG_PKG_CONFIG
-AC_CHECK_HEADERS(stdint.h unistd.h fcntl.h) - PKG_CHECK_MODULES([libevent], [libevent >= 2.0]) PKG_CHECK_MODULES([openssl], [openssl >= 0.9.7])
-# We don't need -lssl, only -lcrypto -openssl_LIBS=`echo "$openssl_LIBS" | $SED -e 's/-lssl//'` - -AC_CHECK_HEADERS([winsock2.h], HAVE_WINSOCK2_H=yes) -AM_CONDITIONAL(HAVE_WINSOCK2_H, test "x$HAVE_WINSOCK2_H" = "xyes") -if test "x$HAVE_WINSOCK2_H" = "xyes"; then - LIB_WS32=-lws2_32 -else - LIB_WS32= -fi -AC_SUBST(LIB_WS32) - -AC_CHECK_SIZEOF(size_t) +AC_CACHE_CHECK([for winsock], [ac_cv_lib_winsock], + [AC_PREPROC_IFELSE( + [#ifndef _WIN32 + #error "not windows" + #endif + ], + [ac_cv_lib_winsock=yes], [ac_cv_lib_winsock=no]) +]) +AS_IF([test "x$ac_cv_lib_winsock" = xyes], + [ws32_LIBS=-lws2_32], + [ws32_LIBS=]) +AC_SUBST(ws32_LIBS)
AC_CONFIG_FILES([Makefile]) - +AC_CONFIG_HEADERS([config.h]) AC_OUTPUT - diff --git a/src/test/unittest_socks.c b/src/test/unittest_socks.c index c85fcf9..c77e3dc 100644 --- a/src/test/unittest_socks.c +++ b/src/test/unittest_socks.c @@ -425,6 +425,7 @@ test_socks_socks4_request(void *data) /* First test: Correct SOCKS4 req packet with nothing in the optional field. */ struct parsereq pr1; + memset(&pr1, 0, sizeof(struct parsereq)); state->parsereq = pr1; uchar req1[8]; req1[0] = 1; diff --git a/src/util.c b/src/util.c index 7e3e747..70a6586 100644 --- a/src/util.c +++ b/src/util.c @@ -7,6 +7,7 @@ #include <stdlib.h>
#include <assert.h> +#include <limits.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> @@ -21,6 +22,9 @@ #include <event2/util.h> #include <event2/dns.h>
+/** Any size_t larger than this amount is likely to be an underflow. */ +#define SIZE_T_CEILING (SIZE_MAX/2 - 16) + static const char *sev_to_string(int severity); static int sev_is_valid(int severity); static int write_logfile_prologue(int fd); @@ -137,11 +141,7 @@ obfs_vsnprintf(char *str, size_t size, const char *format, va_list args) return -1; /* no place for the NUL */ if (size > SIZE_T_CEILING) return -1; -#ifdef MS_WINDOWS - r = _vsnprintf(str, size, format, args); -#else r = vsnprintf(str, size, format, args); -#endif str[size-1] = '\0'; if (r < 0 || r >= (ssize_t)size) return -1; diff --git a/src/util.h b/src/util.h index 2705d51..ee04c85 100644 --- a/src/util.h +++ b/src/util.h @@ -8,8 +8,6 @@ /* va_list definition */ #include <stdarg.h>
-#include "config.h" - struct sockaddr_storage; struct event_base; struct evdns_base; @@ -27,19 +25,6 @@ int init_evdns_base(struct event_base *base);
/***** String functions stuff. *****/
-/* The sizeof a size_t, as computed by sizeof. */ -#ifndef SSIZE_T_MAX -#if (SIZEOF_SIZE_T == 4) -#define SSIZE_T_MAX INT32_MAX -#elif (SIZEOF_SIZE_T == 8) -#define SSIZE_T_MAX INT64_MAX -#else -#error "Can't define SSIZE_T_MAX" -#endif -#endif -/** Any size_t larger than this amount is likely to be an underflow. */ -#define SIZE_T_CEILING ((size_t)(SSIZE_T_MAX-16)) - #ifndef __GNUC__ #define __attribute__(x) #endif
tor-commits@lists.torproject.org