mirror of
https://github.com/github/codeql.git
synced 2026-04-28 10:15:14 +02:00
C++: Add cpp/incorrect-string-type-conversion test with unreachable code
This commit is contained in:
@@ -109,3 +109,34 @@ void CheckedConversionFalsePositiveTest3(unsigned short flags, LPTSTR buffer)
|
||||
|
||||
lpWchar = (LPWSTR)buffer; // $ Alert
|
||||
}
|
||||
|
||||
typedef unsigned long long size_t;
|
||||
|
||||
size_t wcslen(const wchar_t *str);
|
||||
size_t strlen(const char* str);
|
||||
|
||||
template<typename C>
|
||||
size_t str_len(const C *str) {
|
||||
if (sizeof(C) != 1) {
|
||||
return wcslen((const wchar_t *)str); // $ SPURIOUS: Alert
|
||||
}
|
||||
|
||||
return strlen((const char *)str);
|
||||
}
|
||||
|
||||
template<typename C>
|
||||
size_t wrong_str_len(const C *str) {
|
||||
if (sizeof(C) == 1) {
|
||||
return wcslen((const wchar_t *)str); // $ Alert
|
||||
}
|
||||
|
||||
return strlen((const char *)str);
|
||||
}
|
||||
|
||||
void test_str_len(const wchar_t *wstr, const char *str) {
|
||||
size_t len =
|
||||
str_len(wstr) +
|
||||
str_len(str) +
|
||||
wrong_str_len(wstr) +
|
||||
wrong_str_len(str);
|
||||
}
|
||||
|
||||
@@ -11,3 +11,5 @@
|
||||
| WcharCharConversion.cpp:103:21:103:26 | buffer | Conversion from LPTSTR to LPWSTR. Use of invalid string can lead to undefined behavior. |
|
||||
| WcharCharConversion.cpp:106:21:106:26 | buffer | Conversion from LPTSTR to LPWSTR. Use of invalid string can lead to undefined behavior. |
|
||||
| WcharCharConversion.cpp:110:20:110:25 | buffer | Conversion from LPTSTR to LPWSTR. Use of invalid string can lead to undefined behavior. |
|
||||
| WcharCharConversion.cpp:121:34:121:36 | str | Conversion from const char * to const wchar_t *. Use of invalid string can lead to undefined behavior. |
|
||||
| WcharCharConversion.cpp:130:34:130:36 | str | Conversion from const char * to const wchar_t *. Use of invalid string can lead to undefined behavior. |
|
||||
|
||||
Reference in New Issue
Block a user