Skip to content

Commit 77e4d05

Browse files
authored
Update test.cpp
1 parent 872dd0d commit 77e4d05

File tree

1 file changed

+17
-5
lines changed
  • cpp/ql/test/experimental/query-tests/Security/CWE/CWE-125/semmle/tests

1 file changed

+17
-5
lines changed

cpp/ql/test/experimental/query-tests/Security/CWE/CWE-125/semmle/tests/test.cpp

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ void goodTest0()
1414
len = 9;
1515
for (wchar_t wc; (ret = mbtowc(&wc, ptr, len)) > 0; len-=ret) { // GOOD
1616
wprintf(L"%lc", wc);
17+
ptr += ret;
1718
}
1819
}
1920
void goodTest1(const char* ptr)
@@ -23,6 +24,7 @@ void goodTest1(const char* ptr)
2324
len = strlen(ptr);
2425
for (wchar_t wc; (ret = mbtowc(&wc, ptr, len)) > 0; len-=ret) { // GOOD
2526
wprintf(L"%lc", wc);
27+
ptr += ret;
2628
}
2729
}
2830
void goodTest2(char* ptr)
@@ -32,6 +34,7 @@ void goodTest2(char* ptr)
3234
int len = 9;
3335
for (wchar_t wc; (ret = mbtowc(&wc, ptr, 16)) > 0; len-=ret) { // GOOD
3436
wprintf(L"%lc", wc);
37+
ptr += ret;
3538
}
3639
}
3740

@@ -42,6 +45,7 @@ void goodTest3(const char* ptr)
4245
len = strlen(ptr);
4346
for (wchar_t wc; (ret = mbtowc(&wc, ptr, MB_CUR_MAX)) > 0; len-=ret) { // GOOD
4447
wprintf(L"%lc", wc);
48+
ptr += ret;
4549
}
4650
}
4751
void goodTest4(const char* ptr)
@@ -51,6 +55,7 @@ void goodTest4(const char* ptr)
5155
len = strlen(ptr);
5256
for (wchar_t wc; (ret = mbtowc(&wc, ptr, MB_LEN_MAX)) > 0; len-=ret) { // GOOD
5357
wprintf(L"%lc", wc);
58+
ptr += ret;
5459
}
5560
}
5661
void badTest1(const char* ptr)
@@ -60,6 +65,7 @@ void badTest1(const char* ptr)
6065
len = strlen(ptr);
6166
for (wchar_t wc; (ret = mbtowc(&wc, ptr, 4)) > 0; len-=ret) { // BAD:we can get unpredictable results
6267
wprintf(L"%lc", wc);
68+
ptr += ret;
6369
}
6470
}
6571
void badTest2(const char* ptr)
@@ -69,6 +75,7 @@ void badTest2(const char* ptr)
6975
len = strlen(ptr);
7076
for (wchar_t wc; (ret = mbtowc(&wc, ptr, sizeof(wchar_t))) > 0; len-=ret) { // BAD:we can get unpredictable results
7177
wprintf(L"%lc", wc);
78+
ptr += ret;
7279
}
7380
}
7481

@@ -89,11 +96,12 @@ void goodTest5(const char* ptr,wchar_t *wc,int wc_len)
8996
}
9097
}
9198

92-
void badTest3(const char* ptr,wchar_t *wc,int wc_len)
99+
void badTest3(const char* ptr,int wc_len)
93100
{
94101
int ret;
95102
int len;
96103
len = wc_len;
104+
wchar_t *wc = new wchar_t[wc_len];
97105
while (*ptr && len > 0) {
98106
ret = mbtowc(wc, ptr, MB_CUR_MAX); // BAD
99107
if (ret <0)
@@ -105,11 +113,12 @@ void badTest3(const char* ptr,wchar_t *wc,int wc_len)
105113
wc++;
106114
}
107115
}
108-
void badTest4(const char* ptr,wchar_t *wc,int wc_len)
116+
void badTest4(const char* ptr,int wc_len)
109117
{
110118
int ret;
111119
int len;
112120
len = wc_len;
121+
wchar_t *wc = new wchar_t[wc_len];
113122
while (*ptr && len > 0) {
114123
ret = mbtowc(wc, ptr, 16); // BAD
115124
if (ret <0)
@@ -121,11 +130,12 @@ void badTest4(const char* ptr,wchar_t *wc,int wc_len)
121130
wc++;
122131
}
123132
}
124-
void badTest5(const char* ptr,wchar_t *wc,int wc_len)
133+
void badTest5(const char* ptr,int wc_len)
125134
{
126135
int ret;
127136
int len;
128137
len = wc_len;
138+
wchar_t *wc = new wchar_t[wc_len];
129139
while (*ptr && len > 0) {
130140
ret = mbtowc(wc, ptr, sizeof(wchar_t)); // BAD
131141
if (ret <0)
@@ -138,11 +148,12 @@ void badTest5(const char* ptr,wchar_t *wc,int wc_len)
138148
}
139149
}
140150

141-
void badTest6(const char* ptr,wchar_t *wc,int wc_len)
151+
void badTest6(const char* ptr,int wc_len)
142152
{
143153
int ret;
144154
int len;
145155
len = wc_len;
156+
wchar_t *wc = new wchar_t[wc_len];
146157
while (*ptr && wc_len > 0) {
147158
ret = mbtowc(wc, ptr, wc_len); // BAD
148159
if (ret <0)
@@ -160,11 +171,12 @@ void badTest6(const char* ptr,wchar_t *wc,int wc_len)
160171
ptr+=ret;
161172
}
162173
}
163-
void badTest7(const char* ptr,wchar_t *wc,int wc_len)
174+
void badTest7(const char* ptr,int wc_len)
164175
{
165176
int ret;
166177
int len;
167178
len = wc_len;
179+
wchar_t *wc = new wchar_t[wc_len];
168180
while (*ptr && wc_len > 0) {
169181
ret = mbtowc(wc, ptr, len); // BAD
170182
if (ret <0)

0 commit comments

Comments
 (0)