mirror of
https://github.com/curl/curl.git
synced 2026-08-24 22:43:38 +03:00
lib: replace _tcsncpy/wcsncpy/wcscpy with _s counterparts (Windows)
Replace: - curl_sspi: macro `_tcsncpy()` with `_tcsncpy_s()`. - curlx/fopen: `wcsncpy()` with `wcsncpy_s()`. - curlx/fopen: `wcscpy()` with `wcscpy_s()`. Use of the pre-existing functions were safe. This patch aims to use the recommended Windows CRT functions. Handle errors returned by them. Also to avoid the compiler warnings silenced via `_CRT_SECURE_NO_WARNINGS`: ``` lib/curl_sspi.c(152): warning C4996: 'wcsncpy': This function or variable may be unsafe. Consider using wcsncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. lib/curlx/fopen.c(161): warning C4996: 'wcsncpy': This function or variable may be unsafe. Consider using wcsncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. lib/curlx/fopen.c(162): warning C4996: 'wcscpy': This function or variable may be unsafe. Consider using wcscpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. lib/curlx/fopen.c(174): warning C4996: 'wcsncpy': This function or variable may be unsafe. Consider using wcsncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. lib/curlx/fopen.c(175): warning C4996: 'wcscpy': This function or variable may be unsafe. Consider using wcscpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. ``` Refs: https://learn.microsoft.com/cpp/c-runtime-library/reference/strncpy-strncpy-l-wcsncpy-wcsncpy-l-mbsncpy-mbsncpy-l https://learn.microsoft.com/cpp/c-runtime-library/reference/strncpy-s-strncpy-s-l-wcsncpy-s-wcsncpy-s-l-mbsncpy-s-mbsncpy-s-l https://learn.microsoft.com/cpp/c-runtime-library/security-features-in-the-crt Cherry-picked from #19581 (in part) Closes #19589
This commit is contained in:
parent
3561f2c7bf
commit
eaa7651374
3 changed files with 22 additions and 7 deletions
|
|
@ -158,8 +158,14 @@ static bool fix_excessive_path(const TCHAR *in, TCHAR **out)
|
|||
if(!temp)
|
||||
goto cleanup;
|
||||
|
||||
wcsncpy(temp, L"\\\\?\\UNC\\", 8);
|
||||
wcscpy(temp + 8, fbuf + 2);
|
||||
if(wcsncpy_s(temp, needed, L"\\\\?\\UNC\\", 8)) {
|
||||
(free)(temp);
|
||||
goto cleanup;
|
||||
}
|
||||
if(wcscpy_s(temp + 8, needed, fbuf + 2)) {
|
||||
(free)(temp);
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* "\\?\" + full path + null */
|
||||
|
|
@ -171,8 +177,14 @@ static bool fix_excessive_path(const TCHAR *in, TCHAR **out)
|
|||
if(!temp)
|
||||
goto cleanup;
|
||||
|
||||
wcsncpy(temp, L"\\\\?\\", 4);
|
||||
wcscpy(temp + 4, fbuf);
|
||||
if(wcsncpy_s(temp, needed, L"\\\\?\\", 4)) {
|
||||
(free)(temp);
|
||||
goto cleanup;
|
||||
}
|
||||
if(wcscpy_s(temp + 4, needed, fbuf)) {
|
||||
(free)(temp);
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
(free)(fbuf);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue