Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitea9e8b7

Browse files
committed
Expand undefined sanitizer examples
Also, changed the default for detected undefined issues to stop programexecution and return a non-zero code.
1 parentaf2c5ac commitea9e8b7

File tree

5 files changed

+38
-34
lines changed

5 files changed

+38
-34
lines changed

‎.gitlab-ci.yml

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -469,16 +469,10 @@ Linux/Static Analysis:
469469
CMAKE_OPTIONS:-D CLANG_TIDY=ON -D CPPCHECK=ON
470470
<<:*linux_success_template
471471

472-
Linux/GCC/Baseline:
473-
variables:
474-
CTEST_OPTIONS:--verbose
475-
<<:*linux_success_template
476-
477472
Linux/Clang/Baseline:
478473
variables:
479474
CC:clang
480475
CXX:clang++
481-
CTEST_OPTIONS:--verbose
482476
<<:*linux_success_template
483477

484478
Linux/GCC/ThreadSanitizer:
@@ -527,16 +521,14 @@ Linux/Clang/MemorySanitizer:
527521
Linux/GCC/UndefinedSanitizer:
528522
variables:
529523
CMAKE_OPTIONS:-D EXAMPLE_USE_SANITIZER=undefined
530-
CTEST_OPTIONS:--verbose
531-
<<:*linux_success_template
524+
<<:*linux_failure_template
532525

533526
Linux/Clang/UndefinedSanitizer:
534527
variables:
535528
CC:clang
536529
CXX:clang++
537530
CMAKE_OPTIONS:-D EXAMPLE_USE_SANITIZER=undefined
538-
CTEST_OPTIONS:--verbose
539-
<<:*linux_success_template
531+
<<:*linux_failure_template
540532

541533
.macos_success_template:&macos_success_template
542534
stage:Sanitizers
@@ -565,15 +557,12 @@ Linux/Clang/UndefinedSanitizer:
565557
-"! ctest --test-dir build --output-on-failure ${CTEST_OPTIONS}"
566558

567559
macOS/AppleClang/Baseline:
568-
variables:
569-
CTEST_OPTIONS:--verbose
570560
<<:*macos_success_template
571561

572562
macOS/Clang/Baseline:
573563
variables:
574564
CC:clang
575565
CXX:clang++
576-
CTEST_OPTIONS:--verbose
577566
<<:*macos_success_template
578567

579568
macOS/AppleClang/ThreadSanitizer:
@@ -610,16 +599,14 @@ macOS/Clang/LeakSanitizer:
610599
macOS/AppleClang/UndefinedSanitizer:
611600
variables:
612601
CMAKE_OPTIONS:-D EXAMPLE_USE_SANITIZER=undefined
613-
CTEST_OPTIONS:--verbose
614-
<<:*macos_success_template
602+
<<:*macos_failure_template
615603

616604
macOS/Clang/UndefinedSanitizer:
617605
variables:
618606
CC:clang
619607
CXX:clang++
620608
CMAKE_OPTIONS:-D EXAMPLE_USE_SANITIZER=undefined
621-
CTEST_OPTIONS:--verbose
622-
<<:*macos_success_template
609+
<<:*macos_failure_template
623610

624611
Windows/MSVC/Address Sanitizer:
625612
image:stabletec/build-core:windows-ltsc2022
@@ -688,14 +675,6 @@ Linux/GCC/UndefinedSanitizer (LEGACY):
688675
CTEST_OPTIONS:--verbose
689676
<<:*linux_success_template
690677

691-
Linux/Clang/UndefinedSanitizer (LEGACY):
692-
variables:
693-
CC:clang
694-
CXX:clang++
695-
CMAKE_OPTIONS:-D USE_SANITIZER=undefined
696-
CTEST_OPTIONS:--verbose
697-
<<:*linux_success_template
698-
699678
Windows/MSVC/Address Sanitizer (LEGACY):
700679
image:stabletec/build-core:windows-ltsc2022
701680
stage:Sanitizers

‎example/all/CMakeLists.txt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ set_sanitizer_options(leak DEFAULT)
4141
set_sanitizer_options(memoryDEFAULT)
4242
set_sanitizer_options(memorywithoriginsDEFAULTSANITIZERmemory
4343
-fsanitize-memory-track-origins)
44-
set_sanitizer_options(undefinedDEFAULT)
44+
set_sanitizer_options(undefinedDEFAULT-fno-sanitize-recover=undefined)
4545
set_sanitizer_options(threadDEFAULT)
4646

4747
set(EXAMPLE_USE_SANITIZER
@@ -113,6 +113,13 @@ target_code_coverage(msan_uninitialized_pointer_used AUTO ALL)
113113
add_test(msan_uninitialized_pointer_usedmsan_uninitialized_pointer_used)
114114

115115
# Fails with UndefinedBehaviourSanitizer
116-
add_executable(ubsanFail../src/ubsan_fail.cpp)
117-
target_code_coverage(ubsanFailAUTOALL)
118-
add_test(ubsanubsanFail)
116+
add_executable(ubsan_dereferencing_misaligned_pointer
117+
../src/ubsan/dereferencing_misaligned_pointer.c)
118+
target_code_coverage(ubsan_dereferencing_misaligned_pointerAUTOALL)
119+
add_test(ubsan_dereferencing_misaligned_pointer
120+
ubsan_dereferencing_misaligned_pointer)
121+
122+
add_executable(ubsan_signed_integer_overflow
123+
../src/ubsan/signed_integer_overflow.c)
124+
target_code_coverage(ubsan_signed_integer_overflowAUTOALL)
125+
add_test(ubsan_signed_integer_overflowubsan_signed_integer_overflow)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// example of a program that dereferences a mis-aligned pointer
2+
#include<stdio.h>
3+
#include<stdlib.h>
4+
#include<string.h>
5+
6+
intmain(intargc,char**argv) {
7+
int*array=malloc(10*sizeof(int));
8+
memset(array,0,10*sizeof(int));
9+
// aligned
10+
printf("aligned: %i",*array);
11+
// mis-aligned
12+
int*misArray= (int*)((char*)(array)+1);
13+
printf("aligned: %i",*misArray);// failure point
14+
15+
free(array);
16+
return0;
17+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// example program that performs a signed integer overflow
2+
intmain(intargc,char**argv) {
3+
intk=0x7fffffff;
4+
k+=argc;// failure point
5+
return0;
6+
}

‎example/src/ubsan_fail.cpp

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp