mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 15:43:32 +01:00
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.
This commit is contained in:
parent
eff5e29404
commit
027614c263
4
changes/bug22410
Normal file
4
changes/bug22410
Normal file
@ -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.
|
18
configure.ac
18
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,
|
||||
|
Loading…
Reference in New Issue
Block a user