commit c2e546aa23fd0de4bb75b909a5693fdd3bcbbb8d
parent e01e4e0146a4618678b5ec8003e0f8a798b592e7
Author: Nick Mathewson <nickm@torproject.org>
Date: Mon, 19 Jun 2017 15:30:23 -0400
Merge remote-tracking branch 'argonblue/bug22410'
Diffstat:
2 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/changes/bug22410 b/changes/bug22410
@@ -0,0 +1,4 @@
+ o Minor bugfixes (portability):
+ - Check at configure time whether uint8_t is unsigned char. Lots
+ of existing code already assumes this, and there could be strict
+ aliasing issues if they aren't the same type. Fixes #22410.
diff --git a/configure.ac b/configure.ac
@@ -1552,6 +1552,24 @@ if test "$tor_cv_sign_extend" != "no"; then
[Define to 1 iff right-shifting a negative value performs sign-extension])
fi
+# Is uint8_t the same type as unsigned char?
+AC_CACHE_CHECK([whether uint8_t is the same type as unsigned char], tor_cv_uint8_uchar,
+[AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <stdint.h>
+extern uint8_t c;
+unsigned char c;]])],
+ [tor_cv_uint8_uchar=yes],
+ [tor_cv_uint8_uchar=no],
+ [tor_cv_uint8_uchar=cross])])
+
+if test "$tor_cv_uint8_uchar" = "cross"; then
+ AC_MSG_NOTICE([Cross-compiling: we'll assume that uint8_t is the same type as unsigned char])
+fi
+
+if test "$tor_cv_uint8_uchar" = "no"; then
+ AC_MSG_ERROR([We assume that uint8_t is the same type as unsigned char, but your compiler disagrees.])
+fi
+
# Whether we should use the dmalloc memory allocation debugging library.
AC_MSG_CHECKING(whether to use dmalloc (debug memory allocation library))
AC_ARG_WITH(dmalloc,