Skip to content

Commit dfbccc4

Browse files
committed
CPP: Additional test cases.
1 parent 0eb0bf9 commit dfbccc4

File tree

2 files changed

+33
-9
lines changed

2 files changed

+33
-9
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
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:127:3:127:20 | ... = ... | Resource d is acquired by class MyClass9 but not released anywhere in this class. |
1112
| ExternalOwners.cpp:49:3:49:20 | ... = ... | Resource a is acquired by class MyScreen but not released anywhere in this class. |
1213
| ListDelete.cpp:21:3:21:21 | ... = ... | Resource first is acquired by class MyThingColection but not released anywhere in this class. |
1314
| 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: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -102,24 +102,47 @@ class MyClass6 : public MyClass5
102102
{
103103
};
104104

105-
class MyClass7
105+
class MyClass7 : public MyClass4
106106
{
107107
public:
108-
MyClass7()
108+
void Release()
109+
{
110+
// do nothing
111+
}
112+
};
113+
114+
class MyClass8 : public MyClass7
115+
{
116+
};
117+
118+
class MyClass9
119+
{
120+
public:
121+
MyClass9()
109122
{
110123
a = new MyClass5(); // GOOD
111124
b = new MyClass5(); // GOOD
112125
c = new MyClass6(); // GOOD
113-
}
114126

115-
~MyClass7()
116-
{
117-
a->Release();
118-
b->Release();
119-
c->Release();
127+
d = new MyClass7(); // BAD
128+
e = new MyClass7(); // BAD [NOT DETECTED]
129+
f = new MyClass8(); // BAD [NOT DETECTED]
120130
}
131+
~MyClass9()
132+
{
133+
a->Release(); // MyClass5::Release()
134+
b->Release(); // MyClass5::Release()
135+
c->Release(); // MyClass5::Release()
121136

122-
MyClass5 *a;
137+
d->Release(); // MyClass7::Release()
138+
e->Release(); // MyClass7::Release()
139+
f->Release(); // MyClass7::Release()
140+
}
141+
MyClass5 *a;
123142
MyClass4 *b;
124143
MyClass4 *c;
144+
145+
MyClass7 *d;
146+
MyClass4 *e;
147+
MyClass4 *f;
125148
};

0 commit comments

Comments
 (0)