diff options
author | Alex Richardson <Alexander.Richardson@cl.cam.ac.uk> | 2020-09-17 18:14:58 +0100 |
---|---|---|
committer | Alex Richardson <Alexander.Richardson@cl.cam.ac.uk> | 2020-09-17 18:14:58 +0100 |
commit | 0d8b61ea93fb1cd54d30d21823b0bc4d15347f2a (patch) | |
tree | 093a9c097060e9960e683dfdf0ddb2cde3ed08bc /configure.ac | |
parent | a38e62314a1fc0583788b42a05c4154491ca0bdf (diff) | |
download | libarchive-0d8b61ea93fb1cd54d30d21823b0bc4d15347f2a.tar.gz |
Avoid mismatch between library and test crypto configuration
I was investigating libarchive test failures on FreeBSD and it turns out
we get a reproducible SIGBUS for test_archive_m5, etc. Debugging this shows
that libarchive and the tests disagree when it comes to the definition of
archive_md5_ctx: libarchive assumes it's the OpenSSL type whereas the test
use the libmd type. The latter is not necessarily aligned enough to store
a pointer (16 bytes for CHERI RISC-V), so we were crashing when storing
EVP_MD_CTX* to an 8-byte-aligned archive_md5_ctx.
To avoid problems like this in the future, add a new macro to the config
header and use that to ensure that all configuration check macros have
been defined in archive_digest_private.h.
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index fbb7b3c2..65c889a2 100644 --- a/configure.ac +++ b/configure.ac @@ -47,6 +47,8 @@ ARCHIVE_REVISION=$(( LIBARCHIVE_VERSION_N() % 1000 )) ARCHIVE_LIBTOOL_VERSION=$ARCHIVE_INTERFACE:$ARCHIVE_REVISION:$ARCHIVE_MINOR # Stick the version numbers into config.h +AC_DEFINE([__LIBARCHIVE_CONFIG_H_INCLUDED], [1], + [Internal macro for sanity checks]) AC_DEFINE([LIBARCHIVE_VERSION_STRING],"LIBARCHIVE_VERSION_S()", [Version number of libarchive]) AC_DEFINE_UNQUOTED([LIBARCHIVE_VERSION_NUMBER],"LIBARCHIVE_VERSION_N()", |