From: Vladimir Panteleev Subject: [PATCH 2/2] kernelbase: Fix GetEnvironmentVariableW return for empty variables. Message-Id: <20200116083242.688444-2-git@vladimir.panteleev.md> Date: Thu, 16 Jan 2020 08:32:42 +0000 In-Reply-To: <20200116083242.688444-1-git@vladimir.panteleev.md> References: <20200116083242.688444-1-git@vladimir.panteleev.md> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48471 Signed-off-by: Vladimir Panteleev --- dlls/kernelbase/process.c | 3 ++- dlls/kernelbase/tests/process.c | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/dlls/kernelbase/process.c b/dlls/kernelbase/process.c index 788f03f220..612b0b2a2f 100644 --- a/dlls/kernelbase/process.c +++ b/dlls/kernelbase/process.c @@ -1276,7 +1276,8 @@ DWORD WINAPI DECLSPEC_HOTPATCH GetEnvironmentVariableW( LPCWSTR name, LPWSTR val len = us_value.Length / sizeof(WCHAR); if (status == STATUS_BUFFER_TOO_SMALL) return len + 1; if (!set_ntstatus( status )) return 0; - if (size) val[len] = 0; + if (!size) return len + 1; + val[len] = 0; return len; } diff --git a/dlls/kernelbase/tests/process.c b/dlls/kernelbase/tests/process.c index 24ab2c4b71..55d96d8659 100644 --- a/dlls/kernelbase/tests/process.c +++ b/dlls/kernelbase/tests/process.c @@ -31,13 +31,17 @@ static BOOL (WINAPI *pSetEnvironmentVariableW)(LPCWSTR, LPCWSTR); static void test_GetEnvironmentVariableW(void) { - DWORD gle; + DWORD gle, ret; pSetEnvironmentVariableW(L"TESTVAR", L"abc"); SetLastError(0xdeadbeef); pGetEnvironmentVariableW(L"TESTVAR", NULL, 0); gle = GetLastError(); ok(gle == 0xdeadbeef, "got %d\n", gle); + + pSetEnvironmentVariableW(L"TESTVAR", L""); + ret = pGetEnvironmentVariableW(L"TESTVAR", NULL, 0); + ok(ret == 1, "got %d\n", ret); } START_TEST(process) -- 2.25.0