Skip to content

Commit 3dd7f6c

Browse files
author
Daniel Kroening
committed
first regression tests
1 parent 29bc3b8 commit 3dd7f6c

File tree

12 files changed

+93
-0
lines changed

12 files changed

+93
-0
lines changed
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+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
CORE
2+
main.o
3+
--taint taint.json
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
^file main.c line 12( function .*)?: There is a T1 flow \(taint rule my_h1\)$
7+
^file main.c line 15( function .*)?: There is a T2 flow \(taint rule my_h2\)$
8+
--
9+
^file main.c line 12( function .*)?: There is a T2 flow \(.*\)$
10+
^file main.c line 15( function .*)?: There is a T1 flow \(.*\)$
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
void my_f(void *) { }
2+
void my_h(void *) { }
3+
4+
void my_function()
5+
{
6+
void *o1;
7+
my_f(o1); // T1 source
8+
9+
void *o2;
10+
o2=o1;
11+
12+
my_h(o2); // T1 sink
13+
}
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[
2+
{ "id": "my_f", "kind": "source", "where": "parameter1", "taint": "T1", "function": "my_f" },
3+
{ "id": "my_h", "kind": "sink", "where": "parameter1", "taint": "T1", "function": "my_h", "message": "There is a T1 flow" }
4+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CORE
2+
main.o
3+
--taint taint.json
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
^file main.c line 12( function .*)?: There is a T1 flow \(taint rule my_h\)$
7+
--
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include <stdlib.h>
2+
3+
void my_f(void *) { }
4+
void my_h(void *) { }
5+
6+
void my_function()
7+
{
8+
struct some_struct
9+
{
10+
void *data;
11+
} whatnot;
12+
13+
my_f(whatnot.data); // T1 source
14+
my_h(whatnot.data); // T1 sink
15+
16+
// via a copy
17+
void *o=whatnot.data;
18+
my_h(o); // T1 sink
19+
20+
// copy entire struct
21+
struct some_struct whatelse;
22+
whatelse=whatnot;
23+
my_h(whatelse.data); // T1 sink
24+
}
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[
2+
{ "id": "my_f", "kind": "source", "where": "parameter1", "taint": "T1", "function": "my_f" },
3+
{ "id": "my_h", "kind": "sink", "where": "parameter1", "taint": "T1", "function": "my_h", "message": "There is a T1 flow" }
4+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE
2+
main.o
3+
--taint taint.json
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
^file main.c line 14( function .*)?: There is a T1 flow \(taint rule my_h\)$
7+
^file main.c line 18( function .*)?: There is a T1 flow \(taint rule my_h\)$
8+
^file main.c line 23( function .*)?: There is a T1 flow \(taint rule my_h\)$
9+
--

0 commit comments

Comments
 (0)