Merge pull request #10641 from akallabeth/tcscpy

replace strcpy/tcscpy/wcscpy strlen/tcslen/wcslen
This commit is contained in:
Martin Fleisz 2024-10-16 08:31:46 +02:00 committed by GitHub
commit 2fd3ace997
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 86 additions and 83 deletions

View File

@ -35,7 +35,7 @@ static char* append(char** buffer, size_t* size, const char* str)
if (!resize(buffer, size, required - *size)) if (!resize(buffer, size, required - *size))
return NULL; return NULL;
} }
strcat(*buffer, str); strncpy(&(*buffer)[len], str, add);
return *buffer; return *buffer;
} }

View File

@ -39,10 +39,12 @@ typedef CHAR TCHAR;
#define _tprintf wprintf #define _tprintf wprintf
#define _sntprintf snwprintf #define _sntprintf snwprintf
#define _tcslen _wcslen #define _tcslen _wcslen
#define _tcsnlen _wcsnlen
#define _tcsdup _wcsdup #define _tcsdup _wcsdup
#define _tcscmp wcscmp #define _tcscmp wcscmp
#define _tcsncmp wcsncmp #define _tcsncmp wcsncmp
#define _tcscpy wcscpy #define _tcscpy wcscpy
#define _tcsncpy wcsncpy
#define _tcscat wcscat #define _tcscat wcscat
#define _tcschr wcschr #define _tcschr wcschr
#define _tcsrchr wcsrchr #define _tcsrchr wcsrchr
@ -53,10 +55,12 @@ typedef CHAR TCHAR;
#define _tprintf printf #define _tprintf printf
#define _sntprintf snprintf #define _sntprintf snprintf
#define _tcslen strlen #define _tcslen strlen
#define _tcsnlen strnlen
#define _tcsdup _strdup #define _tcsdup _strdup
#define _tcscmp strcmp #define _tcscmp strcmp
#define _tcsncmp strncmp #define _tcsncmp strncmp
#define _tcscpy strcpy #define _tcscpy strcpy
#define _tcsncpy strncpy
#define _tcscat strcat #define _tcscat strcat
#define _tcschr strchr #define _tcschr strchr
#define _tcsrchr strrchr #define _tcsrchr strrchr

View File

@ -1078,15 +1078,16 @@ DWORD QueryCommDevice(LPCTSTR lpDeviceName, LPTSTR lpTargetPath, DWORD ucchMax)
return 0; return 0;
} }
if (_tcslen(storedTargetPath) + 2 > ucchMax) const size_t size = _tcsnlen(storedTargetPath, ucchMax);
if (size + 2 > ucchMax)
{ {
SetLastError(ERROR_INSUFFICIENT_BUFFER); SetLastError(ERROR_INSUFFICIENT_BUFFER);
return 0; return 0;
} }
_tcscpy(lpTargetPath, storedTargetPath); _tcsncpy(lpTargetPath, storedTargetPath, size + 1);
lpTargetPath[_tcslen(storedTargetPath) + 1] = '\0'; /* 2nd final '\0' */ lpTargetPath[size + 2] = '\0'; /* 2nd final '\0' */
return _tcslen(lpTargetPath) + 2; return size + 2;
} }
/** /**

View File

@ -25,7 +25,6 @@
static int test_CommDevice(LPCTSTR lpDeviceName, BOOL expectedResult) static int test_CommDevice(LPCTSTR lpDeviceName, BOOL expectedResult)
{ {
TCHAR lpTargetPath[MAX_PATH] = { 0 }; TCHAR lpTargetPath[MAX_PATH] = { 0 };
size_t tcslen = 0;
BOOL result = DefineCommDevice(lpDeviceName, _T("/dev/test")); BOOL result = DefineCommDevice(lpDeviceName, _T("/dev/test"));
if ((!expectedResult && result) || (expectedResult && !result)) /* logical XOR */ if ((!expectedResult && result) || (expectedResult && !result)) /* logical XOR */
@ -45,17 +44,18 @@ static int test_CommDevice(LPCTSTR lpDeviceName, BOOL expectedResult)
return FALSE; return FALSE;
} }
tcslen = (size_t)QueryCommDevice(lpDeviceName, lpTargetPath, MAX_PATH); const size_t tclen = QueryCommDevice(lpDeviceName, lpTargetPath, MAX_PATH);
if (expectedResult) if (expectedResult)
{ {
if (tcslen <= _tcslen(lpTargetPath)) /* at least 2 more TCHAR are expected */ const size_t tlen = _tcsnlen(lpTargetPath, ARRAYSIZE(lpTargetPath) - 1);
if (tclen <= tlen) /* at least 2 more TCHAR are expected */
{ {
_tprintf(_T("QueryCommDevice failure: didn't find the device name: %s\n"), _tprintf(_T("QueryCommDevice failure: didn't find the device name: %s\n"),
lpDeviceName); lpDeviceName);
return FALSE; return FALSE;
} }
if (_tcscmp(_T("/dev/test"), lpTargetPath) != 0) if (_tcsncmp(_T("/dev/test"), lpTargetPath, ARRAYSIZE(lpTargetPath)) != 0)
{ {
_tprintf( _tprintf(
_T("QueryCommDevice failure: device name: %s, expected result: %s, result: %s\n"), _T("QueryCommDevice failure: device name: %s, expected result: %s, result: %s\n"),
@ -64,7 +64,7 @@ static int test_CommDevice(LPCTSTR lpDeviceName, BOOL expectedResult)
return FALSE; return FALSE;
} }
if (lpTargetPath[_tcslen(lpTargetPath) + 1] != 0) if ((tlen >= (ARRAYSIZE(lpTargetPath) - 1)) || (lpTargetPath[tlen + 1] != 0))
{ {
_tprintf(_T("QueryCommDevice failure: device name: %s, the second NULL character is ") _tprintf(_T("QueryCommDevice failure: device name: %s, the second NULL character is ")
_T("missing at the end of the buffer\n"), _T("missing at the end of the buffer\n"),
@ -74,11 +74,11 @@ static int test_CommDevice(LPCTSTR lpDeviceName, BOOL expectedResult)
} }
else else
{ {
if (tcslen > 0) if (tclen > 0)
{ {
_tprintf(_T("QueryCommDevice failure: device name: %s, expected result: <none>, ") _tprintf(_T("QueryCommDevice failure: device name: %s, expected result: <none>, ")
_T("result: %") _T(PRIuz) _T(" %s\n"), _T("result: %") _T(PRIuz) _T(" %s\n"),
lpDeviceName, tcslen, lpTargetPath); lpDeviceName, tclen, lpTargetPath);
return FALSE; return FALSE;
} }

View File

@ -7,32 +7,30 @@
int TestEnvironmentGetEnvironmentStrings(int argc, char* argv[]) int TestEnvironmentGetEnvironmentStrings(int argc, char* argv[])
{ {
int r = -1; int r = -1;
TCHAR* p = NULL;
size_t length = 0;
LPTCH lpszEnvironmentBlock = NULL;
WINPR_UNUSED(argc); WINPR_UNUSED(argc);
WINPR_UNUSED(argv); WINPR_UNUSED(argv);
lpszEnvironmentBlock = GetEnvironmentStrings(); LPTCH lpszEnvironmentBlock = GetEnvironmentStrings();
if (!lpszEnvironmentBlock)
p = lpszEnvironmentBlock; goto fail;
TCHAR* p = lpszEnvironmentBlock;
while (p[0] && p[1]) while (p[0] && p[1])
{ {
const size_t max = _tcslen(p);
const int rc = _sntprintf(NULL, 0, _T("%s\n"), p); const int rc = _sntprintf(NULL, 0, _T("%s\n"), p);
if (rc < 1) if (rc < 1)
{ {
_tprintf(_T("test failed: return %d\n"), rc); _tprintf(_T("test failed: return %d\n"), rc);
goto fail; goto fail;
} }
length = _tcslen(p); if (max != (size_t)(rc - 1))
if (length != (size_t)(rc - 1))
{ {
_tprintf(_T("test failed: length %") _T(PRIuz) _T(" != %d [%s]\n"), length, rc - 1, p); _tprintf(_T("test failed: length %") _T(PRIuz) _T(" != %d [%s]\n"), max, rc - 1, p);
goto fail; goto fail;
} }
p += (length + 1); p += (max + 1);
} }
r = 0; r = 0;

View File

@ -61,8 +61,8 @@ int TestFileFindNextFile(int argc, char* argv[])
* The current implementation does not enforce a particular order * The current implementation does not enforce a particular order
*/ */
if ((_tcscmp(FindData.cFileName, testDirectory2File1) != 0) && if ((_tcsncmp(FindData.cFileName, testDirectory2File1, ARRAYSIZE(testDirectory2File1)) != 0) &&
(_tcscmp(FindData.cFileName, testDirectory2File2) != 0)) (_tcsncmp(FindData.cFileName, testDirectory2File2, ARRAYSIZE(testDirectory2File2)) != 0))
{ {
_tprintf(_T("FindFirstFile failure: Expected: %s, Actual: %s\n"), testDirectory2File1, _tprintf(_T("FindFirstFile failure: Expected: %s, Actual: %s\n"), testDirectory2File1,
FindData.cFileName); FindData.cFileName);
@ -77,8 +77,8 @@ int TestFileFindNextFile(int argc, char* argv[])
return -1; return -1;
} }
if ((_tcscmp(FindData.cFileName, testDirectory2File1) != 0) && if ((_tcsncmp(FindData.cFileName, testDirectory2File1, ARRAYSIZE(testDirectory2File1)) != 0) &&
(_tcscmp(FindData.cFileName, testDirectory2File2) != 0)) (_tcsncmp(FindData.cFileName, testDirectory2File2, ARRAYSIZE(testDirectory2File2)) != 0))
{ {
_tprintf(_T("FindNextFile failure: Expected: %s, Actual: %s\n"), testDirectory2File2, _tprintf(_T("FindNextFile failure: Expected: %s, Actual: %s\n"), testDirectory2File2,
FindData.cFileName); FindData.cFileName);

View File

@ -11,7 +11,7 @@ static const TCHAR testPathNoBackslash[] = _T("C:\\Program Files");
int TestPathCchAddBackslash(int argc, char* argv[]) int TestPathCchAddBackslash(int argc, char* argv[])
{ {
HRESULT status = 0; HRESULT status = 0;
TCHAR Path[PATHCCH_MAX_CCH]; TCHAR Path[PATHCCH_MAX_CCH] = { 0 };
WINPR_UNUSED(argc); WINPR_UNUSED(argc);
WINPR_UNUSED(argv); WINPR_UNUSED(argv);
@ -22,7 +22,7 @@ int TestPathCchAddBackslash(int argc, char* argv[])
* or an error code otherwise. * or an error code otherwise.
*/ */
_tcscpy(Path, testPathNoBackslash); _tcsncpy(Path, testPathNoBackslash, ARRAYSIZE(Path));
/* Add a backslash to a path without a trailing backslash, expect S_OK */ /* Add a backslash to a path without a trailing backslash, expect S_OK */
@ -34,7 +34,7 @@ int TestPathCchAddBackslash(int argc, char* argv[])
return -1; return -1;
} }
if (_tcscmp(Path, testPathBackslash) != 0) if (_tcsncmp(Path, testPathBackslash, ARRAYSIZE(Path)) != 0)
{ {
_tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathBackslash); _tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathBackslash);
return -1; return -1;
@ -42,7 +42,7 @@ int TestPathCchAddBackslash(int argc, char* argv[])
/* Add a backslash to a path with a trailing backslash, expect S_FALSE */ /* Add a backslash to a path with a trailing backslash, expect S_FALSE */
_tcscpy(Path, testPathBackslash); _tcsncpy(Path, testPathBackslash, ARRAYSIZE(Path));
status = PathCchAddBackslash(Path, PATHCCH_MAX_CCH); status = PathCchAddBackslash(Path, PATHCCH_MAX_CCH);
@ -52,7 +52,7 @@ int TestPathCchAddBackslash(int argc, char* argv[])
return -1; return -1;
} }
if (_tcscmp(Path, testPathBackslash) != 0) if (_tcsncmp(Path, testPathBackslash, ARRAYSIZE(Path)) != 0)
{ {
_tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathBackslash); _tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathBackslash);
return -1; return -1;
@ -72,7 +72,7 @@ int TestPathCchAddBackslash(int argc, char* argv[])
/* Use insufficient size value, expect FAILED(status) */ /* Use insufficient size value, expect FAILED(status) */
_tcscpy(Path, _T("C:\\tmp")); _tcsncpy(Path, _T("C:\\tmp"), ARRAYSIZE(Path));
status = PathCchAddBackslash(Path, 7); status = PathCchAddBackslash(Path, 7);
@ -86,7 +86,7 @@ int TestPathCchAddBackslash(int argc, char* argv[])
/* Use minimum required size value, expect S_OK */ /* Use minimum required size value, expect S_OK */
_tcscpy(Path, _T("C:\\tmp")); _tcsncpy(Path, _T("C:\\tmp"), ARRAYSIZE(Path));
status = PathCchAddBackslash(Path, 8); status = PathCchAddBackslash(Path, 8);

View File

@ -13,7 +13,7 @@ int TestPathCchAddBackslashEx(int argc, char* argv[])
HRESULT status = 0; HRESULT status = 0;
LPTSTR pszEnd = NULL; LPTSTR pszEnd = NULL;
size_t cchRemaining = 0; size_t cchRemaining = 0;
TCHAR Path[PATHCCH_MAX_CCH]; TCHAR Path[PATHCCH_MAX_CCH] = { 0 };
WINPR_UNUSED(argc); WINPR_UNUSED(argc);
WINPR_UNUSED(argv); WINPR_UNUSED(argv);
@ -24,7 +24,7 @@ int TestPathCchAddBackslashEx(int argc, char* argv[])
* or an error code otherwise. * or an error code otherwise.
*/ */
_tcscpy(Path, testPathNoBackslash); _tcsncpy(Path, testPathNoBackslash, ARRAYSIZE(Path));
/* Add a backslash to a path without a trailing backslash, expect S_OK */ /* Add a backslash to a path without a trailing backslash, expect S_OK */
@ -36,7 +36,7 @@ int TestPathCchAddBackslashEx(int argc, char* argv[])
return -1; return -1;
} }
if (_tcscmp(Path, testPathBackslash) != 0) if (_tcsncmp(Path, testPathBackslash, ARRAYSIZE(Path)) != 0)
{ {
_tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathBackslash); _tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathBackslash);
return -1; return -1;
@ -44,7 +44,7 @@ int TestPathCchAddBackslashEx(int argc, char* argv[])
/* Add a backslash to a path with a trailing backslash, expect S_FALSE */ /* Add a backslash to a path with a trailing backslash, expect S_FALSE */
_tcscpy(Path, testPathBackslash); _tcsncpy(Path, testPathBackslash, ARRAYSIZE(Path));
status = PathCchAddBackslashEx(Path, sizeof(Path) / sizeof(TCHAR), &pszEnd, &cchRemaining); status = PathCchAddBackslashEx(Path, sizeof(Path) / sizeof(TCHAR), &pszEnd, &cchRemaining);
@ -54,7 +54,7 @@ int TestPathCchAddBackslashEx(int argc, char* argv[])
return -1; return -1;
} }
if (_tcscmp(Path, testPathBackslash) != 0) if (_tcsncmp(Path, testPathBackslash, ARRAYSIZE(Path)) != 0)
{ {
_tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathBackslash); _tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathBackslash);
return -1; return -1;
@ -75,7 +75,7 @@ int TestPathCchAddBackslashEx(int argc, char* argv[])
/* Use insufficient size value, expect FAILED(status) */ /* Use insufficient size value, expect FAILED(status) */
_tcscpy(Path, _T("C:\\tmp")); _tcsncpy(Path, _T("C:\\tmp"), ARRAYSIZE(Path));
status = PathCchAddBackslashEx(Path, 7, NULL, NULL); status = PathCchAddBackslashEx(Path, 7, NULL, NULL);
@ -89,7 +89,7 @@ int TestPathCchAddBackslashEx(int argc, char* argv[])
/* Use minimum required size value, expect S_OK */ /* Use minimum required size value, expect S_OK */
_tcscpy(Path, _T("C:\\tmp")); _tcsncpy(Path, _T("C:\\tmp"), ARRAYSIZE(Path));
status = PathCchAddBackslashEx(Path, 8, NULL, NULL); status = PathCchAddBackslashEx(Path, 8, NULL, NULL);

View File

@ -13,14 +13,14 @@ static const TCHAR testPathExtension[] = _T("C:\\Windows\\System32\\cmd.exe");
int TestPathCchAddExtension(int argc, char* argv[]) int TestPathCchAddExtension(int argc, char* argv[])
{ {
HRESULT status = 0; HRESULT status = 0;
TCHAR Path[PATHCCH_MAX_CCH]; TCHAR Path[PATHCCH_MAX_CCH] = { 0 };
WINPR_UNUSED(argc); WINPR_UNUSED(argc);
WINPR_UNUSED(argv); WINPR_UNUSED(argv);
/* Path: no extension, Extension: dot */ /* Path: no extension, Extension: dot */
_tcscpy(Path, testPathNoExtension); _tcsncpy(Path, testPathNoExtension, ARRAYSIZE(Path));
status = PathCchAddExtension(Path, PATHCCH_MAX_CCH, testExtDot); status = PathCchAddExtension(Path, PATHCCH_MAX_CCH, testExtDot);
@ -30,7 +30,7 @@ int TestPathCchAddExtension(int argc, char* argv[])
return -1; return -1;
} }
if (_tcscmp(Path, testPathExtension) != 0) if (_tcsncmp(Path, testPathExtension, ARRAYSIZE(Path)) != 0)
{ {
_tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathExtension); _tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathExtension);
return -1; return -1;
@ -38,7 +38,7 @@ int TestPathCchAddExtension(int argc, char* argv[])
/* Path: no extension, Extension: no dot */ /* Path: no extension, Extension: no dot */
_tcscpy(Path, testPathNoExtension); _tcsncpy(Path, testPathNoExtension, ARRAYSIZE(Path));
status = PathCchAddExtension(Path, PATHCCH_MAX_CCH, testExtNoDot); status = PathCchAddExtension(Path, PATHCCH_MAX_CCH, testExtNoDot);
@ -48,7 +48,7 @@ int TestPathCchAddExtension(int argc, char* argv[])
return -1; return -1;
} }
if (_tcscmp(Path, testPathExtension) != 0) if (_tcsncmp(Path, testPathExtension, ARRAYSIZE(Path)) != 0)
{ {
_tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathExtension); _tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathExtension);
return -1; return -1;
@ -56,7 +56,7 @@ int TestPathCchAddExtension(int argc, char* argv[])
/* Path: extension, Extension: dot */ /* Path: extension, Extension: dot */
_tcscpy(Path, testPathExtension); _tcsncpy(Path, testPathExtension, ARRAYSIZE(Path));
status = PathCchAddExtension(Path, PATHCCH_MAX_CCH, testExtDot); status = PathCchAddExtension(Path, PATHCCH_MAX_CCH, testExtDot);
@ -66,7 +66,7 @@ int TestPathCchAddExtension(int argc, char* argv[])
return -1; return -1;
} }
if (_tcscmp(Path, testPathExtension) != 0) if (_tcsncmp(Path, testPathExtension, ARRAYSIZE(Path)) != 0)
{ {
_tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathExtension); _tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathExtension);
return -1; return -1;
@ -74,7 +74,7 @@ int TestPathCchAddExtension(int argc, char* argv[])
/* Path: extension, Extension: no dot */ /* Path: extension, Extension: no dot */
_tcscpy(Path, testPathExtension); _tcsncpy(Path, testPathExtension, ARRAYSIZE(Path));
status = PathCchAddExtension(Path, PATHCCH_MAX_CCH, testExtDot); status = PathCchAddExtension(Path, PATHCCH_MAX_CCH, testExtDot);
@ -84,7 +84,7 @@ int TestPathCchAddExtension(int argc, char* argv[])
return -1; return -1;
} }
if (_tcscmp(Path, testPathExtension) != 0) if (_tcsncmp(Path, testPathExtension, ARRAYSIZE(Path)) != 0)
{ {
_tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathExtension); _tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathExtension);
return -1; return -1;
@ -114,7 +114,7 @@ int TestPathCchAddExtension(int argc, char* argv[])
/* Insufficient Buffer size */ /* Insufficient Buffer size */
_tcscpy(Path, _T("C:\\456789")); _tcsncpy(Path, _T("C:\\456789"), ARRAYSIZE(Path));
status = PathCchAddExtension(Path, 9 + 4, _T(".jpg")); status = PathCchAddExtension(Path, 9 + 4, _T(".jpg"));
if (SUCCEEDED(status)) if (SUCCEEDED(status))
{ {
@ -126,7 +126,7 @@ int TestPathCchAddExtension(int argc, char* argv[])
/* Minimum required buffer size */ /* Minimum required buffer size */
_tcscpy(Path, _T("C:\\456789")); _tcsncpy(Path, _T("C:\\456789"), ARRAYSIZE(Path));
status = PathCchAddExtension(Path, 9 + 4 + 1, _T(".jpg")); status = PathCchAddExtension(Path, 9 + 4 + 1, _T(".jpg"));
if (FAILED(status)) if (FAILED(status))
{ {

View File

@ -21,7 +21,7 @@ int TestPathCchAppend(int argc, char* argv[])
/* Base Path: Backslash, More Path: No Backslash */ /* Base Path: Backslash, More Path: No Backslash */
_tcscpy(Path, testBasePathBackslash); _tcsncpy(Path, testBasePathBackslash, ARRAYSIZE(Path));
status = PathCchAppend(Path, PATHCCH_MAX_CCH, testMorePathNoBackslash); status = PathCchAppend(Path, PATHCCH_MAX_CCH, testMorePathNoBackslash);
@ -31,7 +31,7 @@ int TestPathCchAppend(int argc, char* argv[])
return -1; return -1;
} }
if (_tcscmp(Path, testPathOut) != 0) if (_tcsncmp(Path, testPathOut, ARRAYSIZE(Path)) != 0)
{ {
_tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathOut); _tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathOut);
return -1; return -1;
@ -39,7 +39,7 @@ int TestPathCchAppend(int argc, char* argv[])
/* Base Path: Backslash, More Path: Backslash */ /* Base Path: Backslash, More Path: Backslash */
_tcscpy(Path, testBasePathBackslash); _tcsncpy(Path, testBasePathBackslash, ARRAYSIZE(Path));
status = PathCchAppend(Path, PATHCCH_MAX_CCH, testMorePathBackslash); status = PathCchAppend(Path, PATHCCH_MAX_CCH, testMorePathBackslash);
@ -49,7 +49,7 @@ int TestPathCchAppend(int argc, char* argv[])
return -1; return -1;
} }
if (_tcscmp(Path, testPathOut) != 0) if (_tcsncmp(Path, testPathOut, ARRAYSIZE(Path)) != 0)
{ {
_tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathOut); _tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathOut);
return -1; return -1;
@ -57,7 +57,7 @@ int TestPathCchAppend(int argc, char* argv[])
/* Base Path: No Backslash, More Path: Backslash */ /* Base Path: No Backslash, More Path: Backslash */
_tcscpy(Path, testBasePathNoBackslash); _tcsncpy(Path, testBasePathNoBackslash, ARRAYSIZE(Path));
status = PathCchAppend(Path, PATHCCH_MAX_CCH, testMorePathBackslash); status = PathCchAppend(Path, PATHCCH_MAX_CCH, testMorePathBackslash);
@ -67,7 +67,7 @@ int TestPathCchAppend(int argc, char* argv[])
return -1; return -1;
} }
if (_tcscmp(Path, testPathOut) != 0) if (_tcsncmp(Path, testPathOut, ARRAYSIZE(Path)) != 0)
{ {
_tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathOut); _tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathOut);
return -1; return -1;
@ -75,7 +75,7 @@ int TestPathCchAppend(int argc, char* argv[])
/* Base Path: No Backslash, More Path: No Backslash */ /* Base Path: No Backslash, More Path: No Backslash */
_tcscpy(Path, testBasePathNoBackslash); _tcsncpy(Path, testBasePathNoBackslash, ARRAYSIZE(Path));
status = PathCchAppend(Path, PATHCCH_MAX_CCH, testMorePathNoBackslash); status = PathCchAppend(Path, PATHCCH_MAX_CCH, testMorePathNoBackslash);
@ -85,7 +85,7 @@ int TestPathCchAppend(int argc, char* argv[])
return -1; return -1;
} }
if (_tcscmp(Path, testPathOut) != 0) if (_tcsncmp(Path, testPathOut, ARRAYSIZE(Path)) != 0)
{ {
_tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathOut); _tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, testPathOut);
return -1; return -1;
@ -102,7 +102,7 @@ int TestPathCchAppend(int argc, char* argv[])
} }
/* According to msdn a NULL pszMore is an invalid argument (although optional !?) */ /* According to msdn a NULL pszMore is an invalid argument (although optional !?) */
_tcscpy(Path, testBasePathNoBackslash); _tcsncpy(Path, testBasePathNoBackslash, ARRAYSIZE(Path));
status = PathCchAppend(Path, PATHCCH_MAX_CCH, NULL); status = PathCchAppend(Path, PATHCCH_MAX_CCH, NULL);
if (status != E_INVALIDARG) if (status != E_INVALIDARG)
{ {
@ -113,7 +113,7 @@ int TestPathCchAppend(int argc, char* argv[])
} }
/* According to msdn cchPath must be > 0 and <= PATHCCH_MAX_CCH */ /* According to msdn cchPath must be > 0 and <= PATHCCH_MAX_CCH */
_tcscpy(Path, testBasePathNoBackslash); _tcsncpy(Path, testBasePathNoBackslash, ARRAYSIZE(Path));
status = PathCchAppend(Path, 0, testMorePathNoBackslash); status = PathCchAppend(Path, 0, testMorePathNoBackslash);
if (status != E_INVALIDARG) if (status != E_INVALIDARG)
{ {
@ -122,7 +122,7 @@ int TestPathCchAppend(int argc, char* argv[])
status); status);
return -1; return -1;
} }
_tcscpy(Path, testBasePathNoBackslash); _tcsncpy(Path, testBasePathNoBackslash, ARRAYSIZE(Path));
status = PathCchAppend(Path, PATHCCH_MAX_CCH + 1, testMorePathNoBackslash); status = PathCchAppend(Path, PATHCCH_MAX_CCH + 1, testMorePathNoBackslash);
if (status != E_INVALIDARG) if (status != E_INVALIDARG)
{ {

View File

@ -20,7 +20,7 @@ static const TCHAR testPathPrefixDeviceNamespace[] = _T("\\\\?\\GLOBALROOT");
int TestPathCchStripPrefix(int argc, char* argv[]) int TestPathCchStripPrefix(int argc, char* argv[])
{ {
HRESULT status = 0; HRESULT status = 0;
TCHAR Path[PATHCCH_MAX_CCH]; TCHAR Path[PATHCCH_MAX_CCH] = { 0 };
WINPR_UNUSED(argc); WINPR_UNUSED(argc);
WINPR_UNUSED(argv); WINPR_UNUSED(argv);
@ -32,7 +32,7 @@ int TestPathCchStripPrefix(int argc, char* argv[])
/* Path with prefix (File Namespace) */ /* Path with prefix (File Namespace) */
_tcscpy(Path, testPathPrefixFileNamespace); _tcsncpy(Path, testPathPrefixFileNamespace, ARRAYSIZE(Path));
status = PathCchStripPrefix(Path, sizeof(testPathPrefixFileNamespace) / sizeof(TCHAR)); status = PathCchStripPrefix(Path, sizeof(testPathPrefixFileNamespace) / sizeof(TCHAR));
@ -42,7 +42,7 @@ int TestPathCchStripPrefix(int argc, char* argv[])
return -1; return -1;
} }
if (_tcscmp(Path, testPathNoPrefixFileNamespace) != 0) if (_tcsncmp(Path, testPathNoPrefixFileNamespace, ARRAYSIZE(Path)) != 0)
{ {
_tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, _tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path,
testPathNoPrefixFileNamespace); testPathNoPrefixFileNamespace);
@ -51,9 +51,9 @@ int TestPathCchStripPrefix(int argc, char* argv[])
/* Path with prefix (Device Namespace) */ /* Path with prefix (Device Namespace) */
_tcscpy(Path, testPathPrefixDeviceNamespace); _tcsncpy(Path, testPathPrefixDeviceNamespace, ARRAYSIZE(Path));
status = PathCchStripPrefix(Path, sizeof(testPathPrefixDeviceNamespace) / sizeof(TCHAR)); status = PathCchStripPrefix(Path, ARRAYSIZE(testPathPrefixDeviceNamespace));
if (status != S_FALSE) if (status != S_FALSE)
{ {
@ -61,7 +61,7 @@ int TestPathCchStripPrefix(int argc, char* argv[])
return -1; return -1;
} }
if (_tcscmp(Path, testPathPrefixDeviceNamespace) != 0) if (_tcsncmp(Path, testPathPrefixDeviceNamespace, ARRAYSIZE(Path)) != 0)
{ {
_tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, _tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path,
testPathPrefixDeviceNamespace); testPathPrefixDeviceNamespace);
@ -82,7 +82,7 @@ int TestPathCchStripPrefix(int argc, char* argv[])
/* Invalid cchPath values: 0, 1, 2, 3 and > PATHCCH_MAX_CCH */ /* Invalid cchPath values: 0, 1, 2, 3 and > PATHCCH_MAX_CCH */
for (int i = 0; i < 5; i++) for (int i = 0; i < 5; i++)
{ {
_tcscpy(Path, testPathPrefixFileNamespace); _tcsncpy(Path, testPathPrefixFileNamespace, ARRAYSIZE(Path));
if (i == 4) if (i == 4)
i = PATHCCH_MAX_CCH + 1; i = PATHCCH_MAX_CCH + 1;
status = PathCchStripPrefix(Path, i); status = PathCchStripPrefix(Path, i);
@ -96,8 +96,8 @@ int TestPathCchStripPrefix(int argc, char* argv[])
} }
/* Minimum Path that would get successfully stripped on windows */ /* Minimum Path that would get successfully stripped on windows */
_tcscpy(Path, testPathPrefixFileNamespaceMinimum); _tcsncpy(Path, testPathPrefixFileNamespaceMinimum, ARRAYSIZE(Path));
size_t i = sizeof(testPathPrefixFileNamespaceMinimum) / sizeof(TCHAR); size_t i = ARRAYSIZE(testPathPrefixFileNamespaceMinimum);
i = i - 1; /* include testing of a non-null terminated string */ i = i - 1; /* include testing of a non-null terminated string */
status = PathCchStripPrefix(Path, i); status = PathCchStripPrefix(Path, i);
if (status != S_OK) if (status != S_OK)
@ -107,7 +107,7 @@ int TestPathCchStripPrefix(int argc, char* argv[])
status); status);
return -1; return -1;
} }
if (_tcscmp(Path, testPathNoPrefixFileNamespaceMinimum) != 0) if (_tcsncmp(Path, testPathNoPrefixFileNamespaceMinimum, ARRAYSIZE(Path)) != 0)
{ {
_tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path, _tprintf(_T("Path Mismatch: Actual: %s, Expected: %s\n"), Path,
testPathNoPrefixFileNamespaceMinimum); testPathNoPrefixFileNamespaceMinimum);
@ -115,7 +115,7 @@ int TestPathCchStripPrefix(int argc, char* argv[])
} }
/* Invalid drive letter symbol */ /* Invalid drive letter symbol */
_tcscpy(Path, _T("\\\\?\\5:")); _tcsncpy(Path, _T("\\\\?\\5:"), ARRAYSIZE(Path));
status = PathCchStripPrefix(Path, 6); status = PathCchStripPrefix(Path, 6);
if (status == S_OK) if (status == S_OK)
{ {

View File

@ -13,14 +13,14 @@ int TestPathIsUNCEx(int argc, char* argv[])
{ {
BOOL status = 0; BOOL status = 0;
LPCTSTR Server = NULL; LPCTSTR Server = NULL;
TCHAR Path[PATHCCH_MAX_CCH]; TCHAR Path[PATHCCH_MAX_CCH] = { 0 };
WINPR_UNUSED(argc); WINPR_UNUSED(argc);
WINPR_UNUSED(argv); WINPR_UNUSED(argv);
/* Path is UNC */ /* Path is UNC */
_tcscpy(Path, testPathUNC); _tcsncpy(Path, testPathUNC, ARRAYSIZE(Path));
status = PathIsUNCEx(Path, &Server); status = PathIsUNCEx(Path, &Server);
@ -30,7 +30,7 @@ int TestPathIsUNCEx(int argc, char* argv[])
return -1; return -1;
} }
if (_tcscmp(Server, testServer) != 0) if (_tcsncmp(Server, testServer, ARRAYSIZE(testServer)) != 0)
{ {
_tprintf(_T("Server Name Mismatch: Actual: %s, Expected: %s\n"), Server, testServer); _tprintf(_T("Server Name Mismatch: Actual: %s, Expected: %s\n"), Server, testServer);
return -1; return -1;
@ -38,7 +38,7 @@ int TestPathIsUNCEx(int argc, char* argv[])
/* Path is not UNC */ /* Path is not UNC */
_tcscpy(Path, testPathNotUNC); _tcsncpy(Path, testPathNotUNC, ARRAYSIZE(Path));
status = PathIsUNCEx(Path, &Server); status = PathIsUNCEx(Path, &Server);

View File

@ -1400,7 +1400,7 @@ static KRB_CONTEXT* get_context(PCtxtHandle phContext)
if (!name) if (!name)
return NULL; return NULL;
if (_tcscmp(KERBEROS_SSP_NAME, name) != 0) if (_tcsncmp(KERBEROS_SSP_NAME, name, ARRAYSIZE(KERBEROS_SSP_NAME)) != 0)
return NULL; return NULL;
return sspi_SecureHandleGetLowerPointer(phContext); return sspi_SecureHandleGetLowerPointer(phContext);
} }

View File

@ -604,7 +604,7 @@ static SECURITY_STATUS negotiate_mic_exchange(NEGOTIATE_CONTEXT* context, NegTok
if (!name) if (!name)
return SEC_E_INTERNAL_ERROR; return SEC_E_INTERNAL_ERROR;
if (_tcscmp(name, NTLM_SSP_NAME) == 0) if (_tcsncmp(name, NTLM_SSP_NAME, ARRAYSIZE(NTLM_SSP_NAME)) == 0)
{ {
if (!ntlm_reset_cipher_state(&context->sub_context)) if (!ntlm_reset_cipher_state(&context->sub_context))
return SEC_E_INTERNAL_ERROR; return SEC_E_INTERNAL_ERROR;
@ -1407,9 +1407,9 @@ static SECURITY_STATUS SEC_ENTRY negotiate_AcquireCredentialsHandleW(
const SecPkg* pkg = MechTable[i].pkg; const SecPkg* pkg = MechTable[i].pkg;
cred->mech = &MechTable[i]; cred->mech = &MechTable[i];
if (!kerberos && _tcscmp(pkg->name, KERBEROS_SSP_NAME) == 0) if (!kerberos && _tcsncmp(pkg->name, KERBEROS_SSP_NAME, ARRAYSIZE(KERBEROS_SSP_NAME)) == 0)
continue; continue;
if (!ntlm && _tcscmp(SecPkgTable[i].name, NTLM_SSP_NAME) == 0) if (!ntlm && _tcsncmp(SecPkgTable[i].name, NTLM_SSP_NAME, ARRAYSIZE(NTLM_SSP_NAME)) == 0)
continue; continue;
WINPR_ASSERT(pkg->table_w); WINPR_ASSERT(pkg->table_w);
@ -1450,9 +1450,9 @@ static SECURITY_STATUS SEC_ENTRY negotiate_AcquireCredentialsHandleA(
cred->mech = &MechTable[i]; cred->mech = &MechTable[i];
if (!kerberos && _tcscmp(pkg->name, KERBEROS_SSP_NAME) == 0) if (!kerberos && _tcsncmp(pkg->name, KERBEROS_SSP_NAME, ARRAYSIZE(KERBEROS_SSP_NAME)) == 0)
continue; continue;
if (!ntlm && _tcscmp(SecPkgTable[i].name, NTLM_SSP_NAME) == 0) if (!ntlm && _tcsncmp(SecPkgTable[i].name, NTLM_SSP_NAME, ARRAYSIZE(NTLM_SSP_NAME)) == 0)
continue; continue;
WINPR_ASSERT(pkg->table); WINPR_ASSERT(pkg->table);