Skip to content

Commit 9de6230

Browse files
committed
CPP: Add use after free false positive example.
1 parent 07dbad5 commit 9de6230

File tree

4 files changed

+10
-0
lines changed

4 files changed

+10
-0
lines changed

cpp/ql/test/query-tests/Critical/MemoryFreed/MemoryFreed.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
| test.cpp:128:15:128:16 | v4 |
2727
| test.cpp:185:10:185:12 | cpy |
2828
| test.cpp:199:10:199:12 | cpy |
29+
| test.cpp:205:7:205:11 | ... = ... |
2930
| test_free.cpp:11:10:11:10 | a |
3031
| test_free.cpp:14:10:14:10 | a |
3132
| test_free.cpp:16:10:16:10 | a |
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1+
| test.cpp:203:12:203:17 | call to malloc | This memory allocation may not be released at $@. | test.cpp:206:1:206:1 | return ... | this exit point |
12
| test_free.cpp:36:22:36:35 | ... = ... | This memory allocation may not be released at $@. | test_free.cpp:38:1:38:1 | return ... | this exit point |

cpp/ql/test/query-tests/Critical/MemoryFreed/UseAfterFree.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ edges
1313
| test_free.cpp:239:14:239:15 | * ... | test_free.cpp:241:9:241:10 | * ... |
1414
| test_free.cpp:245:10:245:11 | * ... | test_free.cpp:246:9:246:10 | * ... |
1515
nodes
16+
| test.cpp:205:7:205:11 | ... = ... | semmle.label | ... = ... |
1617
| test_free.cpp:11:10:11:10 | a | semmle.label | a |
1718
| test_free.cpp:12:5:12:5 | a | semmle.label | a |
1819
| test_free.cpp:13:5:13:6 | * ... | semmle.label | * ... |
@@ -40,6 +41,7 @@ nodes
4041
| test_free.cpp:246:9:246:10 | * ... | semmle.label | * ... |
4142
subpaths
4243
#select
44+
| test.cpp:205:7:205:11 | ... = ... | test.cpp:205:7:205:11 | ... = ... | test.cpp:205:7:205:11 | ... = ... | Memory may have been previously freed by $@. | test.cpp:205:2:205:5 | call to free | call to free |
4345
| test_free.cpp:12:5:12:5 | a | test_free.cpp:11:10:11:10 | a | test_free.cpp:12:5:12:5 | a | Memory may have been previously freed by $@. | test_free.cpp:11:5:11:8 | call to free | call to free |
4446
| test_free.cpp:13:5:13:6 | * ... | test_free.cpp:11:10:11:10 | a | test_free.cpp:13:5:13:6 | * ... | Memory may have been previously freed by $@. | test_free.cpp:11:5:11:8 | call to free | call to free |
4547
| test_free.cpp:45:5:45:5 | a | test_free.cpp:42:27:42:27 | a | test_free.cpp:45:5:45:5 | a | Memory may have been previously freed by $@. | test_free.cpp:42:22:42:25 | call to free | call to free |

cpp/ql/test/query-tests/Critical/MemoryFreed/test.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,3 +198,9 @@ void test_strndupa_dealloc() {
198198
char *cpy = strndupa(msg, 4);
199199
free(cpy); // BAD [NOT DETECTED]
200200
}
201+
202+
void test_free_malloc() {
203+
void *a = malloc(10);
204+
void *b;
205+
free(b = a);
206+
}

0 commit comments

Comments
 (0)