File tree Expand file tree Collapse file tree 2 files changed +33
-13
lines changed
cpp/ql/test/query-tests/Likely Bugs/Memory Management/ReturnStackAllocatedMemory Expand file tree Collapse file tree 2 files changed +33
-13
lines changed Original file line number Diff line number Diff line change 1- | test.cpp:12:2:12:12 | return ... | May return stack-allocated memory. |
2- | test.cpp:20:2:20:12 | return ... | May return stack-allocated memory. |
3- | test.cpp:73:2:73:12 | return ... | May return stack-allocated memory. |
4- | test.cpp:93:2:93:12 | return ... | May return stack-allocated memory. |
5- | test.cpp:100:2:100:19 | return ... | May return stack-allocated memory. |
1+ | test.cpp:17:2:17:12 | return ... | May return stack-allocated memory. |
2+ | test.cpp:25:2:25:12 | return ... | May return stack-allocated memory. |
3+ | test.cpp:33:2:33:12 | return ... | May return stack-allocated memory. |
4+ | test.cpp:92:2:92:12 | return ... | May return stack-allocated memory. |
5+ | test.cpp:112:2:112:12 | return ... | May return stack-allocated memory. |
6+ | test.cpp:119:2:119:19 | return ... | May return stack-allocated memory. |
Original file line number Diff line number Diff line change @@ -5,6 +5,11 @@ class MyClass
55 int a, b;
66};
77
8+ MyClass makeMyClass ()
9+ {
10+ return { 0 , 0 }; // GOOD
11+ }
12+
813MyClass *test1 ()
914{
1015 MyClass mc;
@@ -21,47 +26,61 @@ MyClass *test2()
2126}
2227
2328MyClass *test3 ()
29+ {
30+ MyClass mc;
31+ MyClass *ptr = &mc;
32+ ptr = nullptr ;
33+ return ptr; // GOOD [FALSE POSITIVE]
34+ }
35+
36+ MyClass *test4 ()
2437{
2538 MyClass mc;
2639 MyClass &ref = mc;
2740
2841 return &ref; // BAD [NOT DETECTED]
2942}
3043
31- int *test4 ()
44+ MyClass &test5 ()
45+ {
46+ MyClass mc;
47+ return mc; // BAD [NOT DETECTED]
48+ }
49+
50+ int *test6 ()
3251{
3352 MyClass mc;
3453
3554 return &(mc.a ); // BAD [NOT DETECTED]
3655}
3756
38- MyClass test6 ()
57+ MyClass test7 ()
3958{
4059 MyClass mc;
4160
4261 return mc; // GOOD
4362}
4463
45- MyClass *test7 ()
64+ MyClass *test8 ()
4665{
4766 MyClass *mc = new MyClass;
4867
4968 return mc; // GOOD
5069}
5170
52- MyClass test8 ()
71+ MyClass test9 ()
5372{
5473 return MyClass (); // GOOD
5574}
5675
57- int test9 ()
76+ int test10 ()
5877{
5978 MyClass mc;
6079
6180 return mc.a ; // GOOD
6281}
6382
64- MyClass *test10 ()
83+ MyClass *test11 ()
6584{
6685 MyClass *ptr;
6786
@@ -73,12 +92,12 @@ MyClass *test10()
7392 return ptr; // BAD
7493}
7594
76- MyClass *test11 (MyClass *param)
95+ MyClass *test12 (MyClass *param)
7796{
7897 return param; // GOOD
7998}
8099
81- MyClass *test12 ()
100+ MyClass *test13 ()
82101{
83102 static MyClass mc;
84103 MyClass &ref = mc;
You can’t perform that action at this time.
0 commit comments