[3/4] userenv: GetProfilesDirectoryW accepts a NULL buffer.

Hans Leidekker hans at codeweavers.com
Wed Mar 2 03:46:44 CST 2011


---
 dlls/userenv/tests/userenv.c |   17 +++++++++++++++++
 dlls/userenv/userenv_main.c  |    4 ++--
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/dlls/userenv/tests/userenv.c b/dlls/userenv/tests/userenv.c
index 446870f..c96b710 100644
--- a/dlls/userenv/tests/userenv.c
+++ b/dlls/userenv/tests/userenv.c
@@ -264,6 +264,23 @@ static void test_get_profiles_dir(void)
 
     HeapFree(GetProcessHeap(), 0, buf);
     HeapFree(GetProcessHeap(), 0, profiles_dir);
+
+    SetLastError(0xdeadbeef);
+    r = GetProfilesDirectoryW(NULL, NULL);
+    expect(FALSE, r);
+    expect_gle(ERROR_INVALID_PARAMETER);
+
+    cch = 0;
+    SetLastError(0xdeadbeef);
+    r = GetProfilesDirectoryW(NULL, &cch);
+    expect(FALSE, r);
+    expect_gle(ERROR_INSUFFICIENT_BUFFER);
+    ok(cch, "expected cch > 0\n");
+
+    SetLastError(0xdeadbeef);
+    r = GetProfilesDirectoryW(NULL, &cch);
+    expect(FALSE, r);
+    expect_gle(ERROR_INSUFFICIENT_BUFFER);
 }
 
 START_TEST(userenv)
diff --git a/dlls/userenv/userenv_main.c b/dlls/userenv/userenv_main.c
index 59b3b1f..4204472 100644
--- a/dlls/userenv/userenv_main.c
+++ b/dlls/userenv/userenv_main.c
@@ -201,7 +201,7 @@ BOOL WINAPI GetProfilesDirectoryW( LPWSTR lpProfilesDir, LPDWORD lpcchSize )
 
     TRACE("%p %p\n", lpProfilesDir, lpcchSize );
 
-    if (!lpProfilesDir || !lpcchSize)
+    if (!lpcchSize)
     {
         SetLastError(ERROR_INVALID_PARAMETER);
         return FALSE;
@@ -234,7 +234,7 @@ BOOL WINAPI GetProfilesDirectoryW( LPWSTR lpProfilesDir, LPDWORD lpcchSize )
     }
     expanded_len = ExpandEnvironmentStringsW(unexpanded_profiles_dir, NULL, 0);
     /* The returned length doesn't include the NULL terminator. */
-    if (*lpcchSize < expanded_len - 1)
+    if (*lpcchSize < expanded_len - 1 || !lpProfilesDir)
     {
         *lpcchSize = expanded_len - 1;
         SetLastError(ERROR_INSUFFICIENT_BUFFER);
-- 
1.7.1







More information about the wine-patches mailing list