Skip to content
Snippets Groups Projects
Commit 027614c2 authored by Taylor Yu's avatar Taylor Yu
Browse files

Ensure that uint8_t is unsigned char

Many places in our code assume that uint8_t is the same type as
unsigned char.  Test this assumption in the configure script.  This is
important because of the privileged aliasing properties of character
types in C.

Fixes #22410.
parent eff5e294
No related branches found
No related tags found
No related merge requests found
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.
......@@ -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,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment