Browse Source

Merge remote-tracking branch 'origin/maint-0.2.3'

Nick Mathewson 11 years ago
parent
commit
851197f11d
3 changed files with 38 additions and 9 deletions
  1. 6 0
      changes/bug6379
  2. 1 0
      configure.in
  3. 31 9
      src/common/OpenBSD_malloc_Linux.c

+ 6 - 0
changes/bug6379

@@ -0,0 +1,6 @@
+  o Minor bugfixes:
+    - Fix build warnings from --enable-openbsd-malloc with gcc warnings
+      enabled. Fixes bug 6379.
+    - Fix 64-bit warnings from --enable-openbsd-malloc. Fixes bug 6379.
+      Bugfix on 0.2.0.20-rc.
+

+ 1 - 0
configure.in

@@ -301,6 +301,7 @@ AC_CHECK_FUNCS(
         gmtime_r \
         inet_aton \
         ioctl \
+        issetugid \
         localtime_r \
         lround \
         memmem \

+ 31 - 9
src/common/OpenBSD_malloc_Linux.c

@@ -14,6 +14,10 @@
  * ----------------------------------------------------------------------------
  */
 
+/* We use this macro to remove some code that we don't actually want,
+ * rather than to fix its warnings. */
+#define BUILDING_FOR_TOR
+
 /*
  * Defining MALLOC_EXTRA_SANITY will enable extra checks which are
  * related to internal conditions and consistency in malloc.c. This has
@@ -79,6 +83,7 @@ static size_t g_alignment = 0;
 
 extern int __libc_enable_secure;
 
+#ifndef HAVE_ISSETUGID
 static int issetugid(void)
 {
 	if (__libc_enable_secure) return 1;
@@ -86,8 +91,10 @@ static int issetugid(void)
 	if (getgid() != getegid()) return 1;
 	return 0;
 }
+#endif
 
 #define PGSHIFT 12
+#undef MADV_FREE
 #define MADV_FREE MADV_DONTNEED
 #include <pthread.h>
 static pthread_mutex_t gen_mutex = PTHREAD_MUTEX_INITIALIZER;
@@ -443,6 +450,7 @@ extern char	*__progname;
 static void
 wrterror(const char *p)
 {
+#ifndef BUILDING_FOR_TOR
 	const char		*q = " error: ";
 	struct iovec	iov[5];
 
@@ -457,7 +465,9 @@ wrterror(const char *p)
 	iov[4].iov_base = (char*)"\n";
 	iov[4].iov_len = 1;
 	writev(STDERR_FILENO, iov, 5);
-
+#else
+        (void)p;
+#endif
 	suicide = 1;
 #ifdef MALLOC_STATS
 	if (malloc_stats)
@@ -471,14 +481,17 @@ wrterror(const char *p)
 static void
 wrtwarning(const char *p)
 {
+#ifndef BUILDING_FOR_TOR
 	const char		*q = " warning: ";
 	struct iovec	iov[5];
+#endif
 
 	if (malloc_abort)
 		wrterror(p);
 	else if (malloc_silent)
 		return;
 
+#ifndef BUILDING_FOR_TOR
 	iov[0].iov_base = __progname;
 	iov[0].iov_len = strlen(__progname);
 	iov[1].iov_base = (char*)malloc_func;
@@ -489,8 +502,11 @@ wrtwarning(const char *p)
 	iov[3].iov_len = strlen(p);
 	iov[4].iov_base = (char*)"\n";
 	iov[4].iov_len = 1;
-	
-	writev(STDERR_FILENO, iov, 5);
+
+	(void) writev(STDERR_FILENO, iov, 5);
+#else
+        (void)p;
+#endif
 }
 
 #ifdef MALLOC_STATS
@@ -665,7 +681,7 @@ malloc_init(void)
 	for (i = 0; i < 3; i++) {
 		switch (i) {
 		case 0:
-			j = readlink("/etc/malloc.conf", b, sizeof b - 1);
+			j = (int) readlink("/etc/malloc.conf", b, sizeof b - 1);
 			if (j <= 0)
 				continue;
 			b[j] = '\0';
@@ -1145,9 +1161,10 @@ malloc_bytes(size_t size)
 	if (size == 0)
 		j = 0;
 	else {
+		size_t ii;
 		j = 1;
-		i = size - 1;
-		while (i >>= 1)
+		ii = size - 1;
+		while (ii >>= 1)
 			j++;
 	}
 
@@ -1971,6 +1988,7 @@ calloc(size_t num, size_t size)
 	return(p);
 }
 
+#ifndef BUILDING_FOR_TOR
 static int ispowerof2 (size_t a) {
 	size_t b;
 	for (b = 1ULL << (sizeof(size_t)*NBBY - 1); b > 1; b >>= 1)
@@ -1978,7 +1996,9 @@ static int ispowerof2 (size_t a) {
 		return 1;
 	return 0;
 }
+#endif
 
+#ifndef BUILDING_FOR_TOR
 int posix_memalign(void **memptr, size_t alignment, size_t size)
 {
 	void *r;
@@ -2015,18 +2035,20 @@ void *valloc(size_t size)
 	posix_memalign(&r, malloc_pagesize, size);
 	return r;
 }
+#endif
 
 size_t malloc_good_size(size_t size)
 {
 	if (size == 0) {
 		return 1;
 	} else if (size <= malloc_maxsize) {
-		int i, j;
+		int j;
+		size_t ii;
 		/* round up to the nearest power of 2, with same approach
 		 * as malloc_bytes() uses. */
 		j = 1;
-		i = size - 1;
-		while (i >>= 1)
+		ii = size - 1;
+		while (ii >>= 1)
 			j++;
 		return ((size_t)1) << j;
 	} else {