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

Skip to content

Commit 5f79831

Browse files
committed
CPP: Tests: NoSpaceForZeroTerminator test cases for calloc and realloc.
1 parent a2c0532 commit 5f79831

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

  • cpp/ql/test/query-tests/Security/CWE/CWE-131/semmle/NoSpaceForZeroTerminator

cpp/ql/test/query-tests/Security/CWE/CWE-131/semmle/NoSpaceForZeroTerminator/test2.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,13 @@
44
typedef unsigned long size_t;
55

66
void *malloc(size_t size);
7+
void *realloc(void *ptr, size_t size);
8+
void *calloc(size_t nmemb, size_t size);
79
void free(void *ptr);
810
size_t strlen(const char *s);
11+
size_t wcslen(const wchar_t *s);
12+
char *strcpy(char *s1, const char *s2);
13+
wchar_t *wcscpy(wchar_t *s1, const wchar_t *s2);
914

1015
namespace std
1116
{
@@ -47,4 +52,23 @@ void good1(char *str) {
4752
free(buffer);
4853
}
4954

55+
void bad2(wchar_t *str) {
56+
// BAD -- Not allocating space for '\0' terminator [NOT DETECTED]
57+
wchar_t *buffer = (wchar_t *)calloc(wcslen(str), sizeof(wchar_t));
58+
wcscpy(buffer, str);
59+
free(buffer);
60+
}
61+
62+
void bad3(wchar_t *str) {
63+
// BAD -- Not allocating space for '\0' terminator [NOT DETECTED]
64+
wchar_t *buffer = (wchar_t *)calloc(sizeof(wchar_t), wcslen(str));
65+
wcscpy(buffer, str);
66+
free(buffer);
67+
}
5068

69+
void bad4(char *str) {
70+
// BAD -- Not allocating space for '\0' terminator [NOT DETECTED]
71+
char *buffer = (char *)realloc(0, strlen(str));
72+
strcpy(buffer, str);
73+
free(buffer);
74+
}

0 commit comments

Comments
 (0)