Module: wine Branch: stable Commit: 430737f19acb84a92bd76a23c79551ed182991e9 URL: https://gitlab.winehq.org/wine/wine/-/commit/430737f19acb84a92bd76a23c79551e...
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 (cherry picked from commit 6fa67bc8d70368e33510cce5128e9e01b2fdce7c)
---
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 2926fbccf9b..093212936d5 100644 --- a/dlls/wininet/internet.c +++ b/dlls/wininet/internet.c @@ -1295,8 +1295,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 0b88c9bc81e..87a2c7d03e8 100644 --- a/dlls/wininet/tests/internet.c +++ b/dlls/wininet/tests/internet.c @@ -1685,7 +1685,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;