[PATCH v2] kernelbase: Zero out retkey in the ERROR_INVALID_HANDLE case in RegOpenKeyExW
Jefferson Carpenter
jeffersoncarpenter2 at gmail.com
Tue Mar 24 01:10:15 CDT 2020
Fixes https://bugs.winehq.org/show_bug.cgi?id=48798
thanks,
Jefferson
-------------- next part --------------
From 414615308777554b1c6022f5b71a07dffbc5a154 Mon Sep 17 00:00:00 2001
From: Jefferson Carpenter <jeffersoncarpenter2 at gmail.com>
Date: Tue, 24 Mar 2020 08:02:34 +0000
Subject: [PATCH] kernelbase: Zero out retkey in the ERROR_INVALID_HANDLE case
in RegOpenKeyExW
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48798
Signed-off-by: Jefferson Carpenter <jeffersoncarpenter2 at gmail.com>
---
dlls/advapi32/tests/registry.c | 5 +++++
dlls/kernelbase/registry.c | 5 ++++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c
index e4d4893bd4..3ef87d1731 100644
--- a/dlls/advapi32/tests/registry.c
+++ b/dlls/advapi32/tests/registry.c
@@ -1081,6 +1081,11 @@ static void test_reg_open_key(void)
ok(!RegCloseKey(hkResult), "got invalid hkey\n");
/* empty subkey of NULL */
+ hkResult = hkPreserve;
+ ret = RegOpenKeyExW(NULL, L"", 0, KEY_QUERY_VALUE, &hkResult);
+ ok(ret == ERROR_INVALID_HANDLE, "expected ERROR_INVALID_HANDLE, got %d\n", ret);
+ ok(hkResult == NULL, "expected hkResult == NULL\n");
+
hkResult = hkPreserve;
ret = RegOpenKeyExA(NULL, "", 0, KEY_QUERY_VALUE, &hkResult);
ok(ret == ERROR_INVALID_HANDLE, "expected ERROR_INVALID_HANDLE, got %d\n", ret);
diff --git a/dlls/kernelbase/registry.c b/dlls/kernelbase/registry.c
index e6f3722f70..dfd649269c 100644
--- a/dlls/kernelbase/registry.c
+++ b/dlls/kernelbase/registry.c
@@ -479,7 +479,10 @@ LSTATUS WINAPI DECLSPEC_HOTPATCH RegOpenKeyExW( HKEY hkey, LPCWSTR name, DWORD o
if (HandleToUlong(hkey) == HandleToUlong(HKEY_CLASSES_ROOT) && name && *name == '\\') name++;
if (!retkey) return ERROR_INVALID_PARAMETER;
- if (!(hkey = get_special_root_hkey( hkey, access ))) return ERROR_INVALID_HANDLE;
+ if (!(hkey = get_special_root_hkey( hkey, access ))) {
+ *retkey = NULL;
+ return ERROR_INVALID_HANDLE;
+ }
attr.Length = sizeof(attr);
attr.RootDirectory = hkey;
--
2.23.0
More information about the wine-devel
mailing list