Files
codeql/cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 79/Wrapped.cpp
2018-10-23 13:05:42 +01:00

71 lines
936 B
C++

typedef unsigned int size_t;
void *malloc(size_t size);
void free(void *ptr);
void MyFree1(char *_ptr)
{
delete [] _ptr;
}
void MyFree2(char *_ptr, const char *debug_message)
{
delete [] _ptr;
}
class Wrapped
{
public:
Wrapped(int len) {
ptr1 = new char[len]; // GOOD
ptr2 = new char[len]; // GOOD
ptr3 = new char[len]; // GOOD
}
~Wrapped()
{
MyFree1(ptr1);
MyFree2(ptr2, "debug message");
MyFree3(ptr3);
}
void MyFree3(char *_ptr)
{
delete [] _ptr;
}
private:
char *ptr1, *ptr2, *ptr3;
};
class Wrapped2
{
public:
Wrapped2(int len) {
ptr1 = new char[len]; // GOOD
ptr2 = new char[len]; // BAD: not released in destructor
Init(len);
}
~Wrapped2()
{
Shutdown();
}
void Init(int len)
{
ptr3 = new char[len]; // GOOD
ptr4 = new char[len]; // BAD: not released in destructor
}
void Shutdown()
{
delete [] ptr1;
delete [] ptr3;
}
private:
char *ptr1, *ptr2, *ptr3, *ptr4;
};