ソースを参照

“Fix” FIPS build under ASAN.

It's not obvious how to make ASAN happy with the integrity test but this
will let us test FIPS-only code with ASAN at least.

Change-Id: Iac983787e04cb86a158e4416c410d9b2d1e5e03f
Reviewed-on: https://boringssl-review.googlesource.com/14965
Reviewed-by: Adam Langley <agl@google.com>
kris/onging/CECPQ3_patch15
Adam Langley 7年前
committed by Adam Langley
コミット
a0eb4a8193
3個のファイルの変更22行の追加2行の削除
  1. +9
    -2
      crypto/fipsmodule/CMakeLists.txt
  2. +8
    -0
      crypto/fipsmodule/bcm.c
  3. +5
    -0
      crypto/fipsmodule/delocate.go

+ 9
- 2
crypto/fipsmodule/CMakeLists.txt ファイルの表示

@@ -74,11 +74,18 @@ if(FIPS)
set (${OUTPUT} "${_TMP_STR}" PARENT_SCOPE)
endfunction()

JOIN("${BCM_ASM_SOURCES}" ",${CMAKE_CURRENT_BINARY_DIR}/" BCM_ASM_SOURCES_COMMA_SEP)
set(DELOCATE_AS_FLAG)
set(DELOCATE_AS_ARG)

if(NOT "${BCM_ASM_SOURCES}" STREQUAL "")
set(DELOCATE_AS_FLAG "-as")
JOIN("${BCM_ASM_SOURCES}" ",${CMAKE_CURRENT_BINARY_DIR}/" BCM_ASM_SOURCES_COMMA_SEP)
SET(DELOCATE_AS_ARG "${CMAKE_CURRENT_BINARY_DIR}/${BCM_ASM_SOURCES_COMMA_SEP}")
endif()

add_custom_command(
OUTPUT bcm-delocated.S
COMMAND ${GO_EXECUTABLE} run crypto/fipsmodule/delocate.go crypto/fipsmodule/ar.go crypto/fipsmodule/const.go -a $<TARGET_FILE:bcm_c_generated_asm> -as ${CMAKE_CURRENT_BINARY_DIR}/${BCM_ASM_SOURCES_COMMA_SEP} -o ${CMAKE_CURRENT_BINARY_DIR}/bcm-delocated.S
COMMAND ${GO_EXECUTABLE} run crypto/fipsmodule/delocate.go crypto/fipsmodule/ar.go crypto/fipsmodule/const.go -a $<TARGET_FILE:bcm_c_generated_asm> ${DELOCATE_AS_FLAG} ${DELOCATE_AS_ARG} -o ${CMAKE_CURRENT_BINARY_DIR}/bcm-delocated.S
DEPENDS bcm_c_generated_asm ${BCM_ASM_SOURCES} delocate.go ar.go const.go
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)


+ 8
- 0
crypto/fipsmodule/bcm.c ファイルの表示

@@ -48,6 +48,14 @@ static void BORINGSSL_bcm_power_on_self_test(void) __attribute__((constructor));
static void BORINGSSL_bcm_power_on_self_test(void) {
CRYPTO_library_init();

#if defined(__has_feature)
#if __has_feature(address_sanitizer)
/* Power-on tests cannot run under ASAN because it involves reading the full
* .text section, which triggers the global-buffer overflow detection. */
return;
#endif
#endif

const uint8_t *const start = (const uint8_t *)BORINGSSL_bcm_text_dummy_start;
const uint8_t *const end = (const uint8_t *)BORINGSSL_bcm_text_dummy_end;



+ 5
- 0
crypto/fipsmodule/delocate.go ファイルの表示

@@ -49,6 +49,10 @@ func main() {

asPaths := strings.Split(*asmFiles, ",")
for i, path := range asPaths {
if len(path) == 0 {
continue
}

if lines, err = asLines(lines, path, i); err != nil {
panic(err)
}
@@ -258,6 +262,7 @@ func transform(lines []string, symbols map[string]bool) (ret []string) {
}
}

ret = append(ret, ".text")
ret = append(ret, "BORINGSSL_bcm_text_end:")

// Emit redirector functions. Each is a single JMP instruction.


読み込み中…
キャンセル
保存