File tree 10 files changed +49
-14
lines changed
regression/cbmc-primitives 10 files changed +49
-14
lines changed Original file line number Diff line number Diff line change 1
- add_test_pl_tests(
2
- "$<TARGET_FILE:cbmc>"
3
- )
1
+ find_program (Z3_EXISTS "z3" )
2
+ message (${Z3_EXISTS} )
3
+ if (Z3_EXISTS)
4
+ add_test_pl_tests(
5
+ "$<TARGET_FILE:cbmc>"
6
+ )
7
+ else ()
8
+ add_test_pl_tests(
9
+ "$<TARGET_FILE:cbmc>" -X smt-backend
10
+ )
11
+ endif ()
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ invalid_index_range.c
4
4
^EXIT=10$
5
5
^SIGNAL=0$
6
6
^VERIFICATION FAILED$
7
+ \[main\.assertion\.1\] line 9 assertion __CPROVER_exists \{ int i; \(0 <= i && i < 20\) && a\[i\] == i \*i \}: SUCCESS
7
8
line 9 dereference failure: pointer outside object bounds in a\[\(signed (long|long long) int\)i\]: FAILURE
8
9
--
9
10
--
Original file line number Diff line number Diff line change @@ -4,7 +4,13 @@ negated_exists.c
4
4
^EXIT=0$
5
5
^SIGNAL=0$
6
6
^VERIFICATION SUCCESSFUL$
7
- line 9 dereference failure:.*SUCCESS
7
+ \[main\.assertion\.1\] line 9 assertion !__CPROVER_exists \{ int i; \(0 <= i && i < 10\) && a\[i\] == 42 \}: SUCCESS
8
+ \[main\.pointer_dereference\.7\] line 9 dereference failure: pointer NULL in a\[\(signed long int\)i\]: SUCCESS
9
+ \[main\.pointer_dereference\.8\] line 9 dereference failure: pointer invalid in a\[\(signed long int\)i\]: SUCCESS
10
+ \[main\.pointer_dereference\.9\] line 9 dereference failure: deallocated dynamic object in a\[\(signed long int\)i\]: SUCCESS
11
+ \[main\.pointer_dereference\.10\] line 9 dereference failure: dead object in a\[\(signed long int\)i\]: SUCCESS
12
+ \[main\.pointer_dereference\.11\] line 9 dereference failure: pointer outside object bounds in a\[\(signed long int\)i\]: SUCCESS
13
+ \[main\.pointer_dereference\.12\] line 9 dereference failure: invalid integer address in a\[\(signed long int\)i\]: SUCCESS
8
14
--
9
15
--
10
16
Check that memory checks pass for valid pointer dereferences inside a negated
Original file line number Diff line number Diff line change 1
- CORE
1
+ CORE smt-backend
2
2
smt_missing_range_check.c
3
3
--pointer-check -z3
4
4
^EXIT=10$
Original file line number Diff line number Diff line change @@ -4,7 +4,13 @@ valid_index_range.c
4
4
^EXIT=0$
5
5
^SIGNAL=0$
6
6
^VERIFICATION SUCCESSFUL$
7
- line 9 dereference failure:.*SUCCESS
7
+ \[main\.assertion\.1\] line 9 assertion __CPROVER_exists \{ int i; \(0 <= i && i < 10\) && a\[i\] == i \*i \}: SUCCESS
8
+ \[main\.pointer_dereference\.7\] line 9 dereference failure: pointer NULL in a\[\(signed long int\)i\]: SUCCESS
9
+ \[main\.pointer_dereference\.8\] line 9 dereference failure: pointer invalid in a\[\(signed long int\)i\]: SUCCESS
10
+ \[main\.pointer_dereference\.9\] line 9 dereference failure: deallocated dynamic object in a\[\(signed long int\)i\]: SUCCESS
11
+ \[main\.pointer_dereference\.10\] line 9 dereference failure: dead object in a\[\(signed long int\)i\]: SUCCESS
12
+ \[main\.pointer_dereference\.11\] line 9 dereference failure: pointer outside object bounds in a\[\(signed long int\)i\]: SUCCESS
13
+ \[main\.pointer_dereference\.12\] line 9 dereference failure: invalid integer address in a\[\(signed long int\)i\]: SUCCESS
8
14
--
9
15
--
10
16
Check that memory checks pass for valid pointer dereferences inside an
Original file line number Diff line number Diff line change @@ -7,7 +7,10 @@ int main() {
7
7
8
8
assert (* a == * a );
9
9
10
- // BUG: no errors even with `--pointer-check` enabled -- now fixed.
10
+ // BUG: In https://github.com/diffblue/cbmc/issues/6231, it was reported that
11
+ // no checks would be performed on the derefence inside the quantified statement,
12
+ // even when explicitly requested via for instance `--pointer-check`, because
13
+ // we would simply skip over these quantified statements in goto-check.
11
14
assert (
12
15
__CPROVER_forall {
13
16
int i ; (0 <= i && i < 1 ) == > * (a + i ) == * (a + i )
Original file line number Diff line number Diff line change 5
5
int main () {
6
6
char * a = malloc (128 );
7
7
8
+ // BUG: In https://github.com/diffblue/cbmc/issues/6231, it was reported that
9
+ // no checks would be performed on the derefence inside the quantified statement,
10
+ // even when explicitly requested via for instance `--pointer-check`, because
11
+ // we would simply skip over these quantified statements in goto-check.
8
12
assert (
9
13
__CPROVER_forall {
10
14
int i ; (0 <= i && i < 1 ) == > * (a + i ) == * (a + i )
Original file line number Diff line number Diff line change 4
4
^EXIT=0$
5
5
^SIGNAL=0$
6
6
\[main\.assertion\.1\] line \d+ assertion __CPROVER_forall \{ int i ; \(0 <= i && i < 1\) ==> \*\(a\+i\) == \*\(a\+i\) \}: SUCCESS
7
- \[main\.pointer_dereference\.1\] line \d dereference failure: pointer NULL in a\[\(signed (long|long long) int\)i\]: SUCCESS
8
- \[main\.pointer_dereference\.2\] line \d dereference failure: pointer invalid in a\[\(signed (long|long long) int\)i\]: SUCCESS
9
- \[main\.pointer_dereference\.3\] line \d dereference failure: deallocated dynamic object in a\[\(signed (long|long long) int\)i\]: SUCCESS
10
- \[main\.pointer_dereference\.4\] line \d dereference failure: dead object in a\[\(signed (long|long long) int\)i\]: SUCCESS
11
- \[main\.pointer_dereference\.5\] line \d dereference failure: pointer outside object bounds in a\[\(signed (long|long long) int\)i\]: SUCCESS
12
- \[main\.pointer_dereference\.6\] line \d dereference failure: invalid integer address in a\[\(signed (long|long long) int\)i\]: SUCCESS
7
+ \[main\.pointer_dereference\.1\] line \d+ dereference failure: pointer NULL in a\[\(signed (long|long long) int\)i\]: SUCCESS
8
+ \[main\.pointer_dereference\.2\] line \d+ dereference failure: pointer invalid in a\[\(signed (long|long long) int\)i\]: SUCCESS
9
+ \[main\.pointer_dereference\.3\] line \d+ dereference failure: deallocated dynamic object in a\[\(signed (long|long long) int\)i\]: SUCCESS
10
+ \[main\.pointer_dereference\.4\] line \d+ dereference failure: dead object in a\[\(signed (long|long long) int\)i\]: SUCCESS
11
+ \[main\.pointer_dereference\.5\] line \d+ dereference failure: pointer outside object bounds in a\[\(signed (long|long long) int\)i\]: SUCCESS
12
+ \[main\.pointer_dereference\.6\] line \d+ dereference failure: invalid integer address in a\[\(signed (long|long long) int\)i\]: SUCCESS
13
13
\[main\.assertion.2] line \d+ assertion __CPROVER_forall \{ int j; \!\(0 <= j && j < 1\) || \(j == 0 && \*\(a\+j\) == \*\(a+j\)\) \}: SUCCESS
14
14
\[main\.pointer_dereference\.7] line \d+ dereference failure: pointer NULL in a\[\(signed (long|long long) int\)j\]: SUCCESS
15
15
\[main\.pointer_dereference\.8] line \d+ dereference failure: pointer invalid in a\[\(signed (long|long long) int\)j\]: SUCCESS
Original file line number Diff line number Diff line change @@ -11,7 +11,10 @@ int main() {
11
11
12
12
assert (* a == * a );
13
13
14
- // BUG: no errors even with `--pointer-check` enabled -- now fixed.
14
+ // BUG: In https://github.com/diffblue/cbmc/issues/6231, it was reported that
15
+ // no checks would be performed on the derefence inside the quantified statement,
16
+ // even when explicitly requested via for instance `--pointer-check`, because
17
+ // we would simply skip over these quantified statements in goto-check.
15
18
assert (
16
19
__CPROVER_forall {
17
20
int i ; (0 <= i && i < 10 ) == > * (a + i ) == * (a + i )
Original file line number Diff line number Diff line change @@ -10,6 +10,10 @@ int main() {
10
10
char * a = malloc (10 );
11
11
int n ;
12
12
13
+ // BUG: In https://github.com/diffblue/cbmc/issues/6231, it was reported that
14
+ // no checks would be performed on the derefence inside the quantified statement,
15
+ // even when explicitly requested via for instance `--pointer-check`, because
16
+ // we would simply skip over these quantified statements in goto-check.
13
17
assert (
14
18
__CPROVER_forall {
15
19
int i ; (0 <= i && i < (n / 0 )) /* (n / 0) should be caught by --div-by-zero-check */
You can’t perform that action at this time.
0 commit comments