From ed09f2d5cd2914820343b51caf1420bee2835e02 Mon Sep 17 00:00:00 2001 From: David Benjamin Date: Wed, 25 Jul 2018 10:45:01 -0400 Subject: [PATCH] Move the MSan sanity check to a source file. OSS-Fuzz builds fuzz/*.c without matching config, which pulls in crypto/internal.h. See https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9583. Change-Id: I4bd16f8741816ebef00d8102fd1f79b0cb16f6a3 Reviewed-on: https://boringssl-review.googlesource.com/30024 Reviewed-by: Adam Langley --- crypto/crypto.c | 13 +++++++++++++ crypto/internal.h | 13 ------------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/crypto/crypto.c b/crypto/crypto.c index f3ea9f7c..4feda170 100644 --- a/crypto/crypto.c +++ b/crypto/crypto.c @@ -19,6 +19,19 @@ #include "internal.h" +#if defined(OPENSSL_MSAN) && !defined(OPENSSL_NO_ASM) +// MSan works by instrumenting memory accesses in the compiler. Accesses from +// uninstrumented code, such as assembly, are invisible to it. MSan will +// incorrectly report reads from assembly-initialized memory as uninitialized. +// If building BoringSSL with MSan, exclude assembly files from the build and +// define OPENSSL_NO_ASM. +// +// This is checked here rather than in a header because the consumer might not +// define OPENSSL_NO_ASM. It is only necessary for BoringSSL source files to be +// built with it. +#error "BoringSSL must be built with assembly disabled to use MSan." +#endif + #if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_STATIC_ARMCAP) && \ (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \ defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) || \ diff --git a/crypto/internal.h b/crypto/internal.h index 3f0ff6d1..c4e2e517 100644 --- a/crypto/internal.h +++ b/crypto/internal.h @@ -151,19 +151,6 @@ extern "C" { #endif -#if defined(OPENSSL_MSAN) && !defined(OPENSSL_NO_ASM) -// MSan works by instrumenting memory accesses in the compiler. Accesses from -// uninstrumented code, such as assembly, are invisible to it. MSan will -// incorrectly report reads from assembly-initialized memory as uninitialized. -// If building BoringSSL with MSan, exclude assembly files from the build and -// define OPENSSL_NO_ASM. -// -// This is checked here rather than in base.h because the consumer might not -// define OPENSSL_NO_ASM. It is only necessary for BoringSSL source files to be -// built with it. -#error "BoringSSL must be built with assembly disabled to use MSan." -#endif - #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || defined(OPENSSL_ARM) || \ defined(OPENSSL_AARCH64) || defined(OPENSSL_PPC64LE) // OPENSSL_cpuid_setup initializes the platform-specific feature cache.