Skip to content

Commit 0bffa2c

Browse files
committed
Fix 55-loop-unrolling/12-loop-no-overflows
1 parent abb23aa commit 0bffa2c

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

tests/regression/55-loop-unrolling/12-loop-no-overflows.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// PARAM: --enable ana.int.interval_set
22
// extracted from SV-COMP task ldv-memsafety/memleaks_test12-2.i
3-
3+
// CRAM
44
typedef unsigned int size_t;
55
struct ldv_list_head {
66
struct ldv_list_head *next, *prev;
@@ -29,7 +29,7 @@ void ldv_msg_free(struct ldv_msg *msg) {
2929
void main(void) {
3030
struct ldv_msg *msg;
3131
struct ldv_msg *n;
32-
for (msg = ({ const typeof( ((typeof(*msg) *)0)->list ) *__mptr = ((&ldv_global_msg_list)->next); (typeof(*msg) *)( (char *)__mptr - ((size_t) &((typeof(*msg) *)0)->list) ); }), n = ({ const typeof( ((typeof(*(msg)) *)0)->list ) *__mptr = ((msg)->list.next); (typeof(*(msg)) *)( (char *)__mptr - ((size_t) &((typeof(*(msg)) *)0)->list) ); }); &msg->list != (&ldv_global_msg_list); msg = n, n = ({ const typeof( ((typeof(*(n)) *)0)->list ) *__mptr = ((n)->list.next); (typeof(*(n)) *)( (char *)__mptr - ((size_t) &((typeof(*(n)) *)0)->list) ); })) // NOWARN
32+
for (msg = ({ const typeof( ((typeof(*msg) *)0)->list ) *__mptr = ((&ldv_global_msg_list)->next); (typeof(*msg) *)( (char *)__mptr - ((size_t) &((typeof(*msg) *)0)->list) ); }), n = ({ const typeof( ((typeof(*(msg)) *)0)->list ) *__mptr = ((msg)->list.next); (typeof(*(msg)) *)( (char *)__mptr - ((size_t) &((typeof(*(msg)) *)0)->list) ); }); &msg->list != (&ldv_global_msg_list); msg = n, n = ({ const typeof( ((typeof(*(n)) *)0)->list ) *__mptr = ((n)->list.next); (typeof(*(n)) *)( (char *)__mptr - ((size_t) &((typeof(*(n)) *)0)->list) ); }))
3333
{
3434
ldv_list_del(&msg->list);
3535
ldv_msg_free(msg);
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
Should have no overflow warning (on line 32).
2+
Now has NULL dereference warning there still.
3+
4+
$ goblint --enable ana.int.interval_set 12-loop-no-overflows.c
5+
[Warning][Behavior > Undefined > NullPointerDereference][CWE-476] May dereference NULL pointer (12-loop-no-overflows.c:32:9-32:550)
6+
[Warning][Behavior > Undefined > NullPointerDereference][CWE-476] May dereference NULL pointer (12-loop-no-overflows.c:34:9-34:33)
7+
[Info][Unsound] Unknown address given as function argument (12-loop-no-overflows.c:34:9-34:33)
8+
[Warning][Behavior > Undefined > NullPointerDereference][CWE-476] May dereference NULL pointer (12-loop-no-overflows.c:20:5-20:45)
9+
[Warning][Imprecise][Program] Trying to read an index, but was not given an array ({
10+
next -> {&ldv_global_msg_list}
11+
prev -> {&ldv_global_msg_list}
12+
}) (12-loop-no-overflows.c:20:5-20:45)
13+
[Info][Unsound] Unknown address given as function argument (12-loop-no-overflows.c:20:5-20:45)
14+
[Warning][Behavior > Undefined > NullPointerDereference][CWE-476] May dereference NULL pointer (12-loop-no-overflows.c:15:5-15:22)
15+
[Warning][Behavior > Undefined > NullPointerDereference][CWE-476] May dereference NULL pointer (12-loop-no-overflows.c:16:5-16:22)
16+
[Info][Unsound] Unknown address given as function argument (12-loop-no-overflows.c:35:9-35:26)
17+
[Warning][Behavior > Undefined > NullPointerDereference][CWE-476] May dereference NULL pointer (12-loop-no-overflows.c:24:5-24:20)
18+
[Warning][Behavior > Undefined > InvalidMemoryDeallocation][CWE-590] Points-to set for pointer msg->data in function free is top. Potentially invalid memory deallocation may occur (12-loop-no-overflows.c:24:5-24:20)
19+
[Warning][Behavior > Undefined > InvalidMemoryDeallocation][CWE-590] Points-to set for pointer msg in function free is top. Potentially invalid memory deallocation may occur (12-loop-no-overflows.c:25:5-25:14)
20+
[Warning][Behavior > Undefined > NullPointerDereference][CWE-476] May dereference NULL pointer (12-loop-no-overflows.c:32:444-32:470)
21+
[Info][Deadcode] Logical lines of code (LLoC) summary:
22+
live: 16
23+
dead: 0
24+
total lines: 16
25+

0 commit comments

Comments
 (0)