Skip to content

Commit 93ebb84

Browse files
Merge commit '356aed461b387a8ae815a9901a16d26f32f102be' into develop
2 parents b03ec16 + 4820601 commit 93ebb84

File tree

167 files changed

+6326
-3410
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

167 files changed

+6326
-3410
lines changed

.gitignore

+7
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,13 @@ src/goto-analyzer/taint_driver_scripts/.idea/*
1111
/*.creator.user
1212
/*.files
1313
/*.includes
14+
# Eclipse
15+
src/.cproject
16+
src/.project
17+
src/.settings/*
18+
# Visual Studio
19+
Debug/*
20+
Release/*
1421

1522
# compilation files
1623
*.lo

.travis.yml

+3-2
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@ jobs:
2020
# Now we can do the formatting pass
2121
clang-format --version
2222
git-clang-format-3.8 "${TRAVIS_BRANCH}"
23-
git diff --color > formatted.diff
23+
git diff > formatted.diff
2424
if [[ -s formatted.diff ]] ; then
25-
echo 'Formatting error! Apply the following diff and resubmit:'
25+
echo 'Formatting error! The following diff shows the required changes'
26+
echo 'Use the raw log to get a version of the diff that preserves spacing'
2627
cat formatted.diff
2728
exit 1
2829
fi

COMPILING.md

+13

regression/ansi-c/gcc_types_compatible_p1/main.c

+7
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,13 @@ STATIC_ASSERT(__builtin_types_compatible_p(typeof (hot) *, int *));
6767
STATIC_ASSERT(__builtin_types_compatible_p(typeof (hot), typeof (janette)));
6868
STATIC_ASSERT(__builtin_types_compatible_p(__int128, signed __int128));
6969

70+
#ifndef __clang__
71+
// clang doesn't have these
72+
#if defined(__x86_64__) || defined(__i386__)
73+
STATIC_ASSERT(__builtin_types_compatible_p(__float128, _Float128));
74+
#endif
75+
#endif
76+
7077
/* Incompatible types */
7178

7279
STATIC_ASSERT(!__builtin_types_compatible_p(char, _Bool));

regression/cbmc-concurrency/pthread_join1/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ main.c
55
^SIGNAL=0$
66
^\[main\.assertion\.1\] assertion i==1: FAILURE$
77
^\[main\.assertion\.2\] assertion i==2: SUCCESS$
8-
^\*\* 1 of 2 failed \(2 iterations\)$
8+
^\*\* 1 of 2 failed
99
--
1010
^warning: ignoring

regression/cbmc-cover/mcdc1/test.desc

-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,5 @@ main.c
1010
^\[main.coverage.5\] file main.c line 14 function main MC/DC independence condition `C && D && E && !A && B.*: SATISFIED$
1111
^\[main.coverage.6\] file main.c line 14 function main MC/DC independence condition `C && D && E && !A && !B.*: SATISFIED$
1212
^\*\* .* of .* covered \(100.0%\)$
13-
^\*\* Used 10 iterations$
1413
--
1514
^warning: ignoring

regression/cbmc-cover/mcdc11/test.desc

-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,5 @@ main.c
1010
^\[main.coverage.11\] file main.c line 12 function main MC/DC independence condition `!\(C != FALSE\) && D != FALSE.*: SATISFIED$
1111
^\[main.coverage.12\] file main.c line 12 function main MC/DC independence condition `!\(C != FALSE\) && !\(D != FALSE\).*: SATISFIED$
1212
^\*\* .* of .* covered \(100.0%\)$
13-
^\*\* Used 6 iterations$
1413
--
1514
^warning: ignoring

regression/cbmc-cover/mcdc12/test.desc

-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,5 @@ main.c
1313
^\[main.coverage.20\] file main.c line 25 function main MC/DC independence condition `!\(E != FALSE\) && F != FALSE.*: SATISFIED$
1414
^\[main.coverage.21\] file main.c line 25 function main MC/DC independence condition `!\(E != FALSE\) && !\(F != FALSE\).*: SATISFIED$
1515
^\*\* .* of .* covered \(100.0%\)$
16-
^\*\* Used 10 iterations$
1716
--
1817
^warning: ignoring

regression/cbmc-cover/mcdc14/test.desc

-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,5 @@ main.c
66
^\[main.coverage.1\] file main.c line 7 function main decision/condition `altitude > 2500.* SATISFIED$
77
^\[main.coverage.2\] file main.c line 7 function main decision/condition `altitude > 2500.* SATISFIED$
88
^\*\* .* of .* covered \(100.0%\)$
9-
^\*\* Used 2 iterations$
109
--
1110
^warning: ignoring

regression/cbmc-cover/mcdc3/test.desc

-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,5 @@ main.c
77
^\[main.coverage.2\] file main.c line 8 function main MC/DC independence condition `y < \(unsigned int\)5 && !\(x > \(unsigned int\)3\).*: SATISFIED$
88
^\[main.coverage.3\] file main.c line 8 function main MC/DC independence condition `y < \(unsigned int\)5 && x > \(unsigned int\)3.*: SATISFIED$
99
^\*\* .* of .* covered \(100.0%\)$
10-
^\*\* Used 4 iterations$
1110
--
1211
^warning: ignoring

regression/cbmc-cover/mcdc4/test.desc

-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,5 @@ main.c
99
^\[main.coverage.4\] file main.c line 11 function main MC/DC independence condition `!C && D && A && !B.*: SATISFIED$
1010
^\[main.coverage.5\] file main.c line 11 function main MC/DC independence condition `!A && B && C && !D.*: SATISFIED$
1111
^\*\* .* of .* covered \(100.0%\)$
12-
^\*\* Used 9 iterations$
1312
--
1413
^warning: ignoring

regression/cbmc-cover/mcdc6/test.desc

-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,5 @@ main.c
66
^\[main.coverage.1\] file main.c line 7 function main decision/condition `x < \(unsigned int\)3.* false: SATISFIED$
77
^\[main.coverage.2\] file main.c line 7 function main decision/condition `x < \(unsigned int\)3.* true: SATISFIED$
88
^\*\* .* of .* covered \(100.0%\)$
9-
^\*\* Used 2 iterations$
109
--
1110
^warning: ignoring

regression/cbmc-cover/mcdc7/test.desc

-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,5 @@ main.c
88
^\[main.coverage.3\] file main.c line 8 function main decision/condition `x \* 123 < 0.* false: SATISFIED$
99
^\[main.coverage.4\] file main.c line 8 function main decision/condition `x \* 123 < 0.* true: SATISFIED$
1010
^\*\* .* of .* covered \(100.0%\)$
11-
^\*\* Used 2 iterations$
1211
--
1312
^warning: ignoring

regression/cbmc-cover/mcdc8/test.desc

-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,5 @@ main.c
88
^\[main.coverage.3\] file main.c line 9 function main MC/DC independence condition `c != FALSE && !\(a != FALSE\) && !\(b != FALSE\).* SATISFIED$
99
^\[main.coverage.4\] file main.c line 9 function main MC/DC independence condition `!\(c != FALSE\) && a != FALSE && !\(b != FALSE\).* SATISFIED$
1010
^\*\* .* of .* covered \(100.0%\)$
11-
^\*\* Used 6 iterations$
1211
--
1312
^warning: ignoring

regression/cbmc-cover/mcdc9/test.desc

-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,5 @@ main.c
99
^\[main.coverage.12\] file main.c line 16 function main MC/DC independence condition `!\(A != FALSE\) && B != FALSE && C != FALSE && !\(D != FALSE\).* SATISFIED$
1010
^\[main.coverage.13\] file main.c line 16 function main MC/DC independence condition `!\(A != FALSE\) && !\(B != FALSE\) && C != FALSE && !\(D != FALSE\).* SATISFIED$
1111
^\*\* .* of .* covered \(100.0%\)$
12-
^\*\* Used 8 iterations$
1312
--
1413
^warning: ignoring

regression/cbmc-java/exceptions1/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ test.class
44
^EXIT=10$
55
^SIGNAL=0$
66
^.*assertion at file test.java line 26 function.*: FAILURE$
7-
\*\* 1 of [0-9]* failed \(2 iterations\)$
7+
\*\* 1 of [0-9]* failed
88
^VERIFICATION FAILED$
99
--
1010
^warning: ignoring

regression/cbmc-java/exceptions2/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ test.class
44
^EXIT=10$
55
^SIGNAL=0$
66
^.*assertion at file test.java line 15 function.*: FAILURE$
7-
^\*\* 1 of [0-9]* failed \(2 iterations\)$
7+
^\*\* 1 of [0-9]* failed
88
^VERIFICATION FAILED$
99
--
1010
^warning: ignoring

regression/cbmc-with-incr/Multi_Dimensional_Array6/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ main.c
55
^SIGNAL=0$
66
^\[main\.assertion\.1\] assertion matriz\[\(signed long int\)j\]\[\(signed long int\)k\] <= maior: OK$
77
^\[main\.assertion\.2\] assertion matriz\[\(signed long int\)0\]\[\(signed long int\)0\] < maior: FAILED$
8-
^\*\* 1 of 2 failed \(2 iterations\)$
8+
^\*\* 1 of 2 failed
99
--
1010
^warning: ignoring

regression/cbmc-with-incr/Pointer_byte_extract2/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ main.c
44
^EXIT=10$
55
^SIGNAL=0$
66
^\[main\.assertion\.2\] .*: FAILED$
7-
^\*\* 1 of 2 failed \(2 iterations\)$
7+
^\*\* 1 of 2 failed
88
--
99
^warning: ignoring

regression/cbmc-with-incr/Pointer_byte_extract5/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ main.c
44
^EXIT=10$
55
^SIGNAL=0$
66
^\[main\.array_bounds\.5\] array.List upper bound in .*: FAILED$
7-
^\*\* 1 of 9 failed \(2 iterations\)$
7+
^\*\* 1 of 9 failed
88
--
99
^warning: ignoring

regression/cbmc-with-incr/Pointer_byte_extract8/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ main.c
44
^EXIT=0$
55
^SIGNAL=0$
66
^\[main\.array_bounds\.5\] array.List upper bound: FAILED$
7-
^\*\* 1 of 9 failed \(2 iterations\)$
7+
^\*\* 1 of 9 failed
88
--
99
^warning: ignoring

regression/cbmc-with-incr/pipe1/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ main.c
44
^EXIT=10$
55
^SIGNAL=0$
66
^\[main\.assertion\.4\] assertion data\[1\]==31: FAILED$
7-
^\*\* 1 of 5 failed \(2 iterations\)$
7+
^\*\* 1 of 5 failed
88
--
99
^warning: ignoring

regression/cbmc/Malloc23/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ pointer outside dynamic object bounds in \*p: FAILURE
77
pointer outside dynamic object bounds in \*p: FAILURE
88
pointer outside dynamic object bounds in p2\[.*1\]: FAILURE
99
pointer outside dynamic object bounds in p2\[.*0\]: FAILURE
10-
\*\* 4 of 36 failed \(3 iterations\)
10+
\*\* 4 of 36 failed
1111
--
1212
^warning: ignoring

regression/cbmc/Multi_Dimensional_Array6/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ main.c
55
^SIGNAL=0$
66
^\[main\.assertion\.1\] : SUCCESS$
77
^\[main\.assertion\.2\] : FAILURE$
8-
^\*\* 1 of 2 failed \(2 iterations\)$
8+
^\*\* 1 of 2 failed
99
--
1010
^warning: ignoring
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
int main()
2+
{
3+
unsigned char x;
4+
unsigned r=x << ((sizeof(unsigned)-1)*8);
5+
r=x << ((sizeof(unsigned)-1)*8-1);
6+
r=(unsigned)x << ((sizeof(unsigned)-1)*8);
7+
8+
int s=-1 << ((sizeof(int)-1)*8);
9+
s=-256 << ((sizeof(int)-1)*8);
10+
return 0;
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE
2+
main.c
3+
--signed-overflow-check
4+
^SIGNAL=0$
5+
^\[.*\] arithmetic overflow on signed shl in .*: FAILURE$
6+
^\*\* 2 of 4 failed
7+
^VERIFICATION FAILED$
8+
--
9+
^warning: ignoring

regression/cbmc/Pointer_byte_extract2/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ main.c
44
^EXIT=10$
55
^SIGNAL=0$
66
^\[main\.assertion\.2\] .*: FAILURE$
7-
^\*\* 1 of 2 failed \(2 iterations\)$
7+
^\*\* 1 of 2 failed
88
--
99
^warning: ignoring

regression/cbmc/Pointer_byte_extract5/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ main.c
44
^EXIT=10$
55
^SIGNAL=0$
66
array\.List dynamic object upper bound in p->List\[2\]: FAILURE
7-
\*\* 1 of 11 failed \(2 iterations\)
7+
\*\* 1 of 11 failed
88
--
99
^warning: ignoring

regression/cbmc/Pointer_byte_extract8/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ main.c
44
^EXIT=0$
55
^SIGNAL=0$
66
^\[main\.array_bounds\.5\] array.List upper bound: FAILED$
7-
^\*\* 1 of 9 failed \(2 iterations\)$
7+
^\*\* 1 of 9 failed
88
--
99
^warning: ignoring

regression/cbmc/Quantifiers-assertion/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ main.c
88
^\[main.assertion.4\] NotExists-Forall: failed: FAILURE$
99
^\[main.assertion.5\] NotForall-Forall: successful: SUCCESS$
1010
^\[main.assertion.6\] NotForall-NotForall: successful: SUCCESS$
11-
^\*\* 2 of 6 failed \(2 iterations\)$
11+
^\*\* 2 of 6 failed
1212
^VERIFICATION FAILED$

regression/cbmc/Quantifiers-assignment/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ main.c
66
^\[main.assertion.2\] assertion y: FAILURE$
77
^\[main.assertion.3\] assertion z1: SUCCESS$
88
^\[main.assertion.4\] assertion z2: SUCCESS$
9-
^\*\* 1 of 4 failed \(2 iterations\)$
9+
^\*\* 1 of 4 failed
1010
^VERIFICATION FAILED$

regression/cbmc/Quantifiers-if/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ main.c
77
^\[main.assertion.3\] success 1: SUCCESS$
88
^\[main.assertion.4\] failure 3: FAILURE$
99
^\[main.assertion.5\] success 2: SUCCESS$
10-
^\*\* 3 of 5 failed \(2 iterations\)$
10+
^\*\* 3 of 5 failed
1111
^VERIFICATION FAILED$

regression/cbmc/Quantifiers-initialisation2/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ main.c
77
^\[main.assertion.3\] assertion a\[.*\] > a\[.*\]: FAILURE$
88
^\[main.assertion.4\] forall c\[\]: SUCCESS$
99
^\[main.assertion.5\] assertion c\[.*\] >= c\[.*\]: SUCCESS$
10-
^\*\* 1 of 5 failed \(2 iterations\)$
10+
^\*\* 1 of 5 failed
1111
^VERIFICATION FAILED$

regression/cbmc/Quantifiers-not/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ main.c
77
^\[main.assertion.3\] failure 1: FAILURE$
88
^\[main.assertion.4\] success 3: SUCCESS$
99
^\[main.assertion.5\] failure 2: FAILURE$
10-
^\*\* 2 of 5 failed \(2 iterations\)$
10+
^\*\* 2 of 5 failed
1111
^VERIFICATION FAILED$

regression/cbmc/Quantifiers-type/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ main.c
44
^\*\* Results:$
55
^\[main.assertion.1\] assertion tmp_if_expr\$1: FAILURE$
66
^\[main.assertion.2\] assertion tmp_if_expr\$2: SUCCESS$
7-
^\*\* 1 of 2 failed \(2 iterations\)$
7+
^\*\* 1 of 2 failed
88
^VERIFICATION FAILED$
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
int main()
2+
{
3+
unsigned char x;
4+
unsigned r=x << ((sizeof(unsigned)-1)*8);
5+
r=x << ((sizeof(unsigned)-1)*8-1);
6+
r=(unsigned)x << ((sizeof(unsigned)-1)*8);
7+
8+
int s=-1 << ((sizeof(int)-1)*8);
9+
s=-256 << ((sizeof(int)-1)*8);
10+
return 0;
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE
2+
main.c
3+
--undefined-shift-check
4+
^SIGNAL=0$
5+
^\[.*\] shift operand is negative in .*: FAILURE$
6+
^\*\* 1 of 2 failed
7+
^VERIFICATION FAILED$
8+
--
9+
^warning: ignoring

regression/cbmc/fgets1/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ main.c
55
^SIGNAL=0$
66
^VERIFICATION FAILED$
77
\[main.assertion.3\] assertion p\[1\]=='b': FAILURE
8-
\*\* 1 of \d+ failed \(2 iterations\)
8+
\*\* 1 of \d+ failed
99
--
1010
^warning: ignoring

regression/cbmc/memory_allocation1/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ main.c
77
\[main.assertion.1\] assertion \*p==42: SUCCESS
88
\[main.pointer_dereference.14\] dereference failure: pointer invalid in p\[.*1\]: FAILURE
99
\[main.assertion.2\] assertion \*\(p\+1\)==42: SUCCESS
10-
\*\* 12 of 26 failed \(2 iterations\)
10+
\*\* 12 of 26 failed
1111
--
1212
^warning: ignoring

regression/cbmc/memset1/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ main.c
55
^SIGNAL=0$
66
^VERIFICATION FAILED$
77
\[main.assertion.7\] assertion A\[1\]==0x01010111: FAILURE
8-
\*\* 1 of 12 failed \(2 iterations\)
8+
\*\* 1 of 12 failed
99
--
1010
^warning: ignoring

regression/cbmc/pipe1/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ main.c
44
^EXIT=10$
55
^SIGNAL=0$
66
^\[main\.assertion\.4\] assertion data\[1\]==31: FAILURE$
7-
^\*\* 1 of 5 failed \(2 iterations\)$
7+
^\*\* 1 of 5 failed
88
--
99
^warning: ignoring

regression/cbmc/pointer-function-parameters-2/test.desc

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ CORE
22
main.c
33
--function fun --cover branch
44
^\*\* 7 of 7 covered \(100.0%\)$
5-
^\*\* Used 4 iterations$
65
^Test suite:$
76
^a=\(\(signed int \*\*\)NULL\), tmp\$\d+=[^,]*, tmp\$\d+=[^,]*$
87
^a=&tmp\$\d+!0, tmp\$\d+=\(\(signed int \*\)NULL\), tmp\$\d+=[^,]*$

regression/cbmc/pointer-function-parameters/test.desc

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ CORE
22
main.c
33
--function fun --cover branch
44
^\*\* 5 of 5 covered \(100\.0%\)$
5-
^\*\* Used 3 iterations$
65
^Test suite:$
76
^a=\(\(signed int \*\)NULL\), tmp\$\d+=[^,]*$
87
^a=&tmp\$\d+!0, tmp\$\d+=4$
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#include <stdlib.h>
2+
3+
void my_f(void *) { }
4+
void my_h(void *) { }
5+
void *my_g(void) { return malloc(1); }
6+
7+
void my_function()
8+
{
9+
void *o;
10+
11+
my_f(o); // T1 source
12+
my_h(o); // T1,T2 sink
13+
14+
o=my_g(); // T2 source
15+
my_h(o); // T1,T2 sink
16+
}
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[
2+
{ "id": "my_f", "kind": "source", "where": "parameter1", "taint": "T1", "function": "my_f" },
3+
{ "id": "my_g", "kind": "source", "where": "return_value", "taint": "T2", "function": "my_g" },
4+
{ "id": "my_h1", "kind": "sink", "where": "parameter1", "taint": "T1", "function": "my_h", "message": "There is a T1 flow" },
5+
{ "id": "my_h2", "kind": "sink", "where": "parameter1", "taint": "T2", "function": "my_h", "message": "There is a T2 flow" }
6+
]

0 commit comments

Comments
 (0)