@@ -14,6 +14,14 @@ make_lua_path(LUA_PATH
1414
1515if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" )
1616 SetClangLibPath ("libclang_rt.asan_osx_dynamic.dylib" ASAN_LIBRARY_PATH )
17+ # By default, `abort_on_error` is set to 0 on Linux (disabled),
18+ # but on macOS it is set to 1 (enabled) by default. When
19+ # `abort_on_error` is enabled, the AddressSanitizer calls
20+ # `abort()` instead of `_exit()` after printing the error report
21+ # and CTest considers such tests to be failed.
22+ string (JOIN ":" ASAN_OPTIONS
23+ abort_on_error=0
24+ )
1725endif ()
1826
1927add_test (
@@ -238,7 +246,7 @@ string(JOIN ";" TEST_ENVIRONMENT
238246 LD_PRELOAD=${ASAN_DSO_PATH}
239247 LIB_NAME=luac_asan
240248 ERR_INJECTION=HEAP_BUFFER_OVERFLOW
241- ASAN_OPTIONS=abort_on_error=0
249+ ASAN_OPTIONS=${ASAN_OPTIONS}
242250)
243251generate_luac_test (luzer_luac_asan_heap_buffer_overflow
244252 "${TEST_ENVIRONMENT} "
@@ -249,7 +257,7 @@ string(JOIN ";" TEST_ENVIRONMENT
249257 LD_PRELOAD=${ASAN_DSO_PATH}
250258 LIB_NAME=luac_asan
251259 ERR_INJECTION=STACK_BUFFER_OVERFLOW
252- ASAN_OPTIONS=abort_on_error=0
260+ ASAN_OPTIONS=${ASAN_OPTIONS}
253261)
254262generate_luac_test (luzer_luac_asan_stack_buffer_overflow
255263 "${TEST_ENVIRONMENT} "
@@ -260,7 +268,7 @@ string(JOIN ";" TEST_ENVIRONMENT
260268 LD_PRELOAD=${ASAN_DSO_PATH}
261269 LIB_NAME=luac_asan
262270 ERR_INJECTION=DYNAMIC_STACK_BUFFER_OVERFLOW
263- ASAN_OPTIONS=abort_on_error=0
271+ ASAN_OPTIONS=${ASAN_OPTIONS}
264272)
265273generate_luac_test (luzer_luac_asan_dynamic_stack_buffer_overflow
266274 "${TEST_ENVIRONMENT} "
@@ -271,7 +279,7 @@ string(JOIN ";" TEST_ENVIRONMENT
271279 LD_PRELOAD=${ASAN_DSO_PATH}
272280 LIB_NAME=luac_asan
273281 ERR_INJECTION=GLOBAL_BUFFER_OVERFLOW
274- ASAN_OPTIONS=abort_on_error=0
282+ ASAN_OPTIONS=${ASAN_OPTIONS}
275283)
276284generate_luac_test (luzer_luac_asan_global_buffer_overflow
277285 "${TEST_ENVIRONMENT} "
@@ -282,7 +290,7 @@ string(JOIN ";" TEST_ENVIRONMENT
282290 LD_PRELOAD=${ASAN_DSO_PATH}
283291 LIB_NAME=luac_asan
284292 ERR_INJECTION=MEMSET_BUFFER_OVERFLOW
285- ASAN_OPTIONS=abort_on_error=0
293+ ASAN_OPTIONS=${ASAN_OPTIONS}
286294)
287295generate_luac_test (luzer_luac_asan_memset_buffer_overflow
288296 "${TEST_ENVIRONMENT} "
@@ -293,7 +301,7 @@ string(JOIN ";" TEST_ENVIRONMENT
293301 LD_PRELOAD=${ASAN_DSO_PATH}
294302 LIB_NAME=luac_asan
295303 ERR_INJECTION=MEMCPY_BUFFER_OVERFLOW
296- ASAN_OPTIONS=abort_on_error=0
304+ ASAN_OPTIONS=${ASAN_OPTIONS}
297305)
298306generate_luac_test (luzer_luac_asan_memcpy_buffer_overflow
299307 "${TEST_ENVIRONMENT} "
@@ -383,7 +391,7 @@ if (LUA_HAS_JIT)
383391 LD_PRELOAD=${ASAN_DSO_PATH}
384392 FFI_LIB_NAME=testlib_asan${CMAKE_SHARED_LIBRARY_SUFFIX}
385393 ERR_INJECTION=HEAP_BUFFER_OVERFLOW
386- ASAN_OPTIONS=abort_on_error=0
394+ ASAN_OPTIONS=${ASAN_OPTIONS}
387395 )
388396 generate_ffi_test (luzer_ffi_asan_heap_overflow
389397 "${TEST_ENVIRONMENT} "
@@ -394,7 +402,7 @@ if (LUA_HAS_JIT)
394402 LD_PRELOAD=${UBSAN_DSO_PATH}
395403 FFI_LIB_NAME=testlib_ubsan${CMAKE_SHARED_LIBRARY_SUFFIX}
396404 ERR_INJECTION=NULL_POINTER_DEREF
397- ASAN_OPTIONS=abort_on_error=0
405+ ASAN_OPTIONS=${ASAN_OPTIONS}
398406 )
399407 generate_ffi_test (luzer_ffi_ubsan_null_pointer_deref
400408 "${TEST_ENVIRONMENT} "
0 commit comments