aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2016-01-29 09:18:59 -0500
committerNick Mathewson <nickm@torproject.org>2016-01-29 09:18:59 -0500
commit5f7df92571ec5a2d1eddb257e22f5489acc4fc83 (patch)
tree9ef43ebc29ec04a5fe42f2411b3aa61ac2f643c8
parenta5bed4dab2f8521f744d5137e4f439b073c7e5e9 (diff)
downloadtor-5f7df92571ec5a2d1eddb257e22f5489acc4fc83.tar.gz
tor-5f7df92571ec5a2d1eddb257e22f5489acc4fc83.zip
Remove support for unsigned time_t
We've never actually tested this support, and we should probably assume it's broken. To the best of my knowledge, only OpenVMS has this, and even on OpenVMS it's a compile-time option to disable it. And I don't think we build on openvms anyway. (Everybody else seems to be working around the 2038 problem by using a 64-bit time_t, which won't expire for roughly 292 billion years.) Closes ticket 18184.
-rw-r--r--changes/bug181845
-rw-r--r--configure.ac4
-rw-r--r--src/common/torint.h28
-rw-r--r--src/test/test_dir.c2
-rw-r--r--src/win32/orconfig.h3
5 files changed, 9 insertions, 33 deletions
diff --git a/changes/bug18184 b/changes/bug18184
new file mode 100644
index 0000000000..af493df75f
--- /dev/null
+++ b/changes/bug18184
@@ -0,0 +1,5 @@
+ o Removed platform support:
+ - Tor no longer attempts to support platforms where the "time_t" type
+ is unsigned. (To the best of our knowledge, only OpenVMS does this,
+ and Tor has never actually built on OpenVMS.) Closes ticket 18184.
+
diff --git a/configure.ac b/configure.ac
index 6d2312d159..de7221dc90 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1176,7 +1176,7 @@ AC_CHECK_TYPES([rlim_t], , ,
])
AX_CHECK_SIGN([time_t],
- [ AC_DEFINE(TIME_T_IS_SIGNED, 1, [Define if time_t is signed]) ],
+ [ : ],
[ : ], [
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
@@ -1190,7 +1190,7 @@ AX_CHECK_SIGN([time_t],
])
if test "$ax_cv_decl_time_t_signed" = no; then
- AC_MSG_WARN([You have an unsigned time_t; some things will probably break. Please tell the Tor developers about your interesting platform.])
+ AC_MSG_ERROR([You have an unsigned time_t; Tor does not support that. Please tell the Tor developers about your interesting platform.])
fi
AX_CHECK_SIGN([size_t],
diff --git a/src/common/torint.h b/src/common/torint.h
index 418fe0fabf..480ba1a596 100644
--- a/src/common/torint.h
+++ b/src/common/torint.h
@@ -312,8 +312,6 @@ typedef uint32_t uintptr_t;
#ifndef TIME_MAX
-#ifdef TIME_T_IS_SIGNED
-
#if (SIZEOF_TIME_T == SIZEOF_INT)
#define TIME_MAX ((time_t)INT_MAX)
#elif (SIZEOF_TIME_T == SIZEOF_LONG)
@@ -321,25 +319,13 @@ typedef uint32_t uintptr_t;
#elif (SIZEOF_TIME_T == 8)
#define TIME_MAX ((time_t)INT64_MAX)
#else
-#error "Can't define (signed) TIME_MAX"
+#error "Can't define TIME_MAX"
#endif
-#else
-/* Unsigned case */
-#if (SIZEOF_TIME_T == 4)
-#define TIME_MAX ((time_t)UINT32_MAX)
-#elif (SIZEOF_TIME_T == 8)
-#define TIME_MAX ((time_t)UINT64_MAX)
-#else
-#error "Can't define (unsigned) TIME_MAX"
-#endif
-#endif /* time_t_is_signed */
#endif /* ifndef(TIME_MAX) */
#ifndef TIME_MIN
-#ifdef TIME_T_IS_SIGNED
-
#if (SIZEOF_TIME_T == SIZEOF_INT)
#define TIME_MIN ((time_t)INT_MIN)
#elif (SIZEOF_TIME_T == SIZEOF_LONG)
@@ -347,19 +333,9 @@ typedef uint32_t uintptr_t;
#elif (SIZEOF_TIME_T == 8)
#define TIME_MIN ((time_t)INT64_MIN)
#else
-#error "Can't define (signed) TIME_MIN"
+#error "Can't define TIME_MIN"
#endif
-#else
-/* Unsigned case */
-#if (SIZEOF_TIME_T == 4)
-#define TIME_MIN ((time_t)UINT32_MIN)
-#elif (SIZEOF_TIME_T == 8)
-#define TIME_MIN ((time_t)UINT64_MIN)
-#else
-#error "Can't define (unsigned) TIME_MIN"
-#endif
-#endif /* time_t_is_signed */
#endif /* ifndef(TIME_MIN) */
#ifndef SIZE_MAX
diff --git a/src/test/test_dir.c b/src/test/test_dir.c
index 4824a94132..83a8b8ccc6 100644
--- a/src/test/test_dir.c
+++ b/src/test/test_dir.c
@@ -3312,7 +3312,6 @@ test_dir_download_status_schedule(void *arg)
tt_assert(increment == expected_increment);
tt_assert(dls_failure.next_attempt_at == TIME_MIN + expected_increment);
-#if TIME_T_IS_SIGNED
delay1 = INT_MAX;
increment = download_status_schedule_get_delay(&dls_failure,
schedule,
@@ -3320,7 +3319,6 @@ test_dir_download_status_schedule(void *arg)
expected_increment = delay1;
tt_assert(increment == expected_increment);
tt_assert(dls_failure.next_attempt_at == TIME_MAX);
-#endif
delay1 = 0;
increment = download_status_schedule_get_delay(&dls_attempt,
diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h
index c0b14e5304..f381152a11 100644
--- a/src/win32/orconfig.h
+++ b/src/win32/orconfig.h
@@ -220,9 +220,6 @@
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS
-/* Define to 1 if time_t is signed. */
-#define TIME_T_IS_SIGNED
-
/* Define to 1 iff unaligned int access is allowed */
#define UNALIGNED_INT_ACCESS_OK