Skip to content

Commit 4b51e22

Browse files
authored
Merge pull request github#5565 from geoffw0/avrule79
C++: Test strdup with AV rule 79
2 parents e8d7925 + ec95224 commit 4b51e22

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@
1818
| NoDestructor.cpp:23:3:23:20 | ... = ... | Resource n is acquired by class MyClass5 but not released anywhere in this class. |
1919
| PlacementNew.cpp:36:3:36:36 | ... = ... | Resource p1 is acquired by class MyTestForPlacementNew but not released anywhere in this class. |
2020
| SelfRegistering.cpp:25:3:25:24 | ... = ... | Resource side is acquired by class MyOwner but not released anywhere in this class. |
21-
| Variants.cpp:25:3:25:13 | ... = ... | Resource f is acquired by class MyClass4 but not released anywhere in this class. |
22-
| Variants.cpp:65:3:65:17 | ... = ... | Resource a is acquired by class MyClass6 but not released anywhere in this class. |
23-
| Variants.cpp:66:3:66:36 | ... = ... | Resource b is acquired by class MyClass6 but not released anywhere in this class. |
24-
| Variants.cpp:67:3:67:41 | ... = ... | Resource c is acquired by class MyClass6 but not released anywhere in this class. |
21+
| Variants.cpp:26:3:26:13 | ... = ... | Resource f is acquired by class MyClass4 but not released anywhere in this class. |
22+
| Variants.cpp:69:3:69:17 | ... = ... | Resource a is acquired by class MyClass6 but not released anywhere in this class. |
23+
| Variants.cpp:70:3:70:36 | ... = ... | Resource b is acquired by class MyClass6 but not released anywhere in this class. |
24+
| Variants.cpp:71:3:71:41 | ... = ... | Resource c is acquired by class MyClass6 but not released anywhere in this class. |
25+
| Variants.cpp:72:3:72:22 | ... = ... | Resource d is acquired by class MyClass6 but not released anywhere in this class. |
2526
| Wrapped.cpp:46:3:46:22 | ... = ... | Resource ptr2 is acquired by class Wrapped2 but not released anywhere in this class. |
2627
| Wrapped.cpp:59:3:59:22 | ... = ... | Resource ptr4 is acquired by class Wrapped2 but not released anywhere in this class. |

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ void *malloc(size_t size);
55
void *calloc(size_t nmemb, size_t size);
66
void *realloc(void *ptr, size_t size);
77
void free(void* ptr);
8+
char *strdup(const char *s1);
89

910
int *ID(int *x)
1011
{
@@ -45,16 +46,19 @@ class MyClass5
4546
a = new int[10]; // GOOD
4647
b = (int *)calloc(10, sizeof(int)); // GOOD
4748
c = (int *)realloc(0, 10 * sizeof(int)); // GOOD
49+
d = strdup("string");
4850
}
4951

5052
~MyClass5()
5153
{
5254
delete [] a;
5355
free(b);
5456
free(c);
57+
free(d);
5558
}
5659

5760
int *a, *b, *c;
61+
char *d;
5862
};
5963

6064
class MyClass6
@@ -65,13 +69,15 @@ class MyClass6
6569
a = new int[10]; // BAD
6670
b = (int *)calloc(10, sizeof(int)); // BAD
6771
c = (int *)realloc(0, 10 * sizeof(int)); // BAD
72+
d = strdup("string"); // BAD
6873
}
6974

7075
~MyClass6()
7176
{
7277
}
7378

7479
int *a, *b, *c;
80+
char *d;
7581
};
7682

7783
class MyClass7

0 commit comments

Comments
 (0)