From a9d5de8414ed12fab003a10cde2ad72963464d5d Mon Sep 17 00:00:00 2001 From: James Hawkins Date: Sat, 16 Apr 2005 10:49:10 +0000 Subject: [PATCH] RegDeleteKey fails if the lpSubKey param is NULL. --- dlls/advapi32/registry.c | 8 ++++++-- dlls/advapi32/tests/registry.c | 9 +++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/dlls/advapi32/registry.c b/dlls/advapi32/registry.c index eaffa0e82c2..c47be988a71 100644 --- a/dlls/advapi32/registry.c +++ b/dlls/advapi32/registry.c @@ -871,9 +871,11 @@ DWORD WINAPI RegDeleteKeyW( HKEY hkey, LPCWSTR name ) DWORD ret; HKEY tmp; + if (!name) return ERROR_INVALID_PARAMETER; + if (!(hkey = get_special_root_hkey( hkey ))) return ERROR_INVALID_HANDLE; - if (!name || !*name) + if (!*name) { ret = RtlNtStatusToDosError( NtDeleteKey( hkey ) ); } @@ -905,9 +907,11 @@ DWORD WINAPI RegDeleteKeyA( HKEY hkey, LPCSTR name ) DWORD ret; HKEY tmp; + if (!name) return ERROR_INVALID_PARAMETER; + if (!(hkey = get_special_root_hkey( hkey ))) return ERROR_INVALID_HANDLE; - if (!name || !*name) + if (!*name) { ret = RtlNtStatusToDosError( NtDeleteKey( hkey ) ); } diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c index 54d60183678..2a51167e182 100644 --- a/dlls/advapi32/tests/registry.c +++ b/dlls/advapi32/tests/registry.c @@ -352,6 +352,14 @@ static void test_reg_close_key() "expected ERROR_INVALID_HANDLE or ERROR_BADKEY, got %ld\n", ret); } +static void test_reg_delete_key() +{ + DWORD ret; + + ret = RegDeleteKey(hkey_main, NULL); + ok(ret == ERROR_INVALID_PARAMETER, "expected ERROR_INVALID_PARAMETER, got %ld\n", ret); +} + static void test_reg_save_key() { DWORD ret; @@ -385,6 +393,7 @@ START_TEST(registry) test_query_value_ex(); test_reg_open_key(); test_reg_close_key(); + test_reg_delete_key(); test_reg_save_key(); test_reg_load_key();