Module: wine Branch: master Commit: 6fa67bc8d70368e33510cce5128e9e01b2fdce7c URL: https://gitlab.winehq.org/wine/wine/-/commit/6fa67bc8d70368e33510cce5128e9e0...
Author: Francois Gouget fgouget@codeweavers.com Date: Fri Apr 7 15:23:40 2023 +0200
wininet: InternetGetConnectedStateExA() must always null-terminate the state string.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54799
---
dlls/wininet/internet.c | 4 ++++ dlls/wininet/tests/internet.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c index 6155d60938a..665e339f920 100644 --- a/dlls/wininet/internet.c +++ b/dlls/wininet/internet.c @@ -1296,8 +1296,12 @@ BOOL WINAPI InternetGetConnectedStateExA(LPDWORD lpdwStatus, LPSTR lpszConnectio rc = InternetGetConnectedStateExW(lpdwStatus,lpwszConnectionName, dwNameLen, dwReserved); if (rc && lpwszConnectionName) + { WideCharToMultiByte(CP_ACP,0,lpwszConnectionName,-1,lpszConnectionName, dwNameLen, NULL, NULL); + /* Yes, blindly truncate double-byte characters */ + lpszConnectionName[dwNameLen - 1] = '\0'; + }
free(lpwszConnectionName); return rc; diff --git a/dlls/wininet/tests/internet.c b/dlls/wininet/tests/internet.c index fe940656269..ad3d5b17811 100644 --- a/dlls/wininet/tests/internet.c +++ b/dlls/wininet/tests/internet.c @@ -1696,7 +1696,7 @@ static void test_InternetGetConnectedStateExA(void) ok(res == TRUE, "Expected TRUE, got %d\n", res); ok(flags, "Expected at least one flag set\n");
- /* no space for complete string this time */ + /* no space for complete string this time, double-byte characters get truncated */ memset(buffer, 'z', sizeof(buffer) - 1); buffer[sizeof(buffer) - 1] = 0; flags = 0;