Skip to content

Commit 7107cec

Browse files
committed
CPP: Add test cases.
1 parent f4ec168 commit 7107cec

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 79/AV Rule 79.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
| DeleteThis.cpp:56:3:56:24 | ... = ... | Resource ptr10 is acquired by class MyClass3 but not released anywhere in this class. |
99
| DeleteThis.cpp:58:3:58:24 | ... = ... | Resource ptr12 is acquired by class MyClass3 but not released anywhere in this class. |
1010
| DeleteThis.cpp:60:3:60:24 | ... = ... | Resource ptr14 is acquired by class MyClass3 but not released anywhere in this class. |
11+
| DeleteThis.cpp:111:3:111:20 | ... = ... | Resource b is acquired by class MyClass7 but not released anywhere in this class. |
12+
| DeleteThis.cpp:112:3:112:20 | ... = ... | Resource c is acquired by class MyClass7 but not released anywhere in this class. |
1113
| ExternalOwners.cpp:49:3:49:20 | ... = ... | Resource a is acquired by class MyScreen but not released anywhere in this class. |
1214
| ListDelete.cpp:21:3:21:21 | ... = ... | Resource first is acquired by class MyThingColection but not released anywhere in this class. |
1315
| NoDestructor.cpp:23:3:23:20 | ... = ... | Resource n is acquired by class MyClass5 but not released anywhere in this class. |

cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 79/DeleteThis.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,44 @@ class MyClass3
8282
MyClass2 *ptr10, *ptr11, *ptr12, *ptr13, *ptr14, *ptr15;
8383
MyClass2 *ptr20;
8484
};
85+
86+
class MyClass4
87+
{
88+
public:
89+
virtual void Release() = 0;
90+
};
91+
92+
class MyClass5 : public MyClass4
93+
{
94+
public:
95+
void Release()
96+
{
97+
delete this;
98+
}
99+
};
100+
101+
class MyClass6 : public MyClass5
102+
{
103+
};
104+
105+
class MyClass7
106+
{
107+
public:
108+
MyClass7()
109+
{
110+
a = new MyClass5(); // GOOD
111+
b = new MyClass5(); // GOOD [FALSE POSITIVE]
112+
c = new MyClass6(); // GOOD [FALSE POSITIVE]
113+
}
114+
115+
~MyClass7()
116+
{
117+
a->Release();
118+
b->Release();
119+
c->Release();
120+
}
121+
122+
MyClass5 *a;
123+
MyClass4 *b;
124+
MyClass4 *c;
125+
};

0 commit comments

Comments
 (0)