Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d67ea4d

Browse files
committed
CPP: Tests: AV Rule 79 test cases for calloc, realloc and new.
1 parent 7190dd2 commit d67ea4d

2 files changed

Lines changed: 14 additions & 6 deletions

File tree

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

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,20 +54,20 @@ class MyClass
5454
myFile1 = fopen("file1.txt", "rt"); // GOOD
5555
myFile2 = fopen("file2.txt", "rt"); // BAD: not closed in destructor
5656

57+
myArray1 = (int *)calloc(100, sizeof(int)); // BAD: not freed in destructor
58+
myArray2 = new int[100]; // BAD: not deleted in destructor
59+
myArray3 = new int[100]; // GOOD: deleted in destructor
5760

58-
59-
60-
61-
62-
61+
myPtr7 = (int*)realloc(0, sizeof(int)); // GOOD: freed below (assuming the realloc succeeds)
62+
myPtr8 = (int*)realloc(myPtr7, sizeof(int)); // BAD: not freed in destructor
6363
}
6464

6565
~MyClass()
6666
{
6767
delete myPtr1;
6868
free(myPtr3);
6969
fclose(myFile1);
70-
70+
delete [] myArray3;
7171
}
7272

7373
void close()
@@ -85,6 +85,11 @@ class MyClass
8585
AutoPtr<int> myAutoPtr;
8686
FILE *myFile1;
8787
FILE *myFile2;
88+
int *myArray1;
89+
int *myArray2;
90+
int *myArray3;
91+
int *myPtr7;
92+
int *myPtr8;
8893
};
8994

9095
int main()

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
| AV Rule 79.cpp:49:3:49:18 | ... = ... | Resource myPtr5 is acquired by class MyClass but not released in the destructor. It is released from close on line 75, so this function may need to be called from the destructor. |
44
| AV Rule 79.cpp:50:3:50:37 | ... = ... | Resource myPtr6 is acquired by class MyClass but not released in the destructor. It is released from close on line 76, so this function may need to be called from the destructor. |
55
| AV Rule 79.cpp:55:3:55:36 | ... = ... | Resource myFile2 is acquired by class MyClass but not released anywhere in this class. |
6+
| AV Rule 79.cpp:57:3:57:44 | ... = ... | Resource myArray1 is acquired by class MyClass but not released anywhere in this class. |
7+
| AV Rule 79.cpp:58:3:58:25 | ... = ... | Resource myArray2 is acquired by class MyClass but not released anywhere in this class. |
8+
| AV Rule 79.cpp:62:3:62:45 | ... = ... | Resource myPtr8 is acquired by class MyClass but not released anywhere in this class. |
69
| Container2.cpp:21:3:21:16 | ... = ... | Resource ptr3 is acquired by class Container2<char> but not released anywhere in this class. |
710
| Container2.cpp:21:3:21:16 | ... = ... | Resource ptr3 is acquired by class Container2<int> but not released anywhere in this class. |
811
| DeleteThis.cpp:56:3:56:24 | ... = ... | Resource ptr10 is acquired by class MyClass3 but not released anywhere in this class. |

0 commit comments

Comments
 (0)