From ddcdef0768306ae4051b5d900313a3ae047dde44 Mon Sep 17 00:00:00 2001 From: Mark Jansen Date: Thu, 17 Aug 2017 10:30:10 +0000 Subject: [PATCH] [ADVAPI32_APITEST] Test unaligned pointers for RegOpenKeyExW. svn path=/trunk/; revision=75585 --- rostests/apitests/advapi32/CMakeLists.txt | 1 + rostests/apitests/advapi32/RegOpenKeyExW.c | 59 ++++++++++++++++++++++ rostests/apitests/advapi32/testlist.c | 2 + 3 files changed, 62 insertions(+) create mode 100644 rostests/apitests/advapi32/RegOpenKeyExW.c diff --git a/rostests/apitests/advapi32/CMakeLists.txt b/rostests/apitests/advapi32/CMakeLists.txt index c446e0f046c..d78ba867cba 100644 --- a/rostests/apitests/advapi32/CMakeLists.txt +++ b/rostests/apitests/advapi32/CMakeLists.txt @@ -9,6 +9,7 @@ list(APPEND SOURCE QueryServiceConfig2.c RegEnumKey.c RegEnumValueW.c + RegOpenKeyExW.c RegQueryInfoKey.c RegQueryValueExW.c RtlEncryptMemory.c diff --git a/rostests/apitests/advapi32/RegOpenKeyExW.c b/rostests/apitests/advapi32/RegOpenKeyExW.c new file mode 100644 index 00000000000..fc6dc40b561 --- /dev/null +++ b/rostests/apitests/advapi32/RegOpenKeyExW.c @@ -0,0 +1,59 @@ +/* + * PROJECT: ReactOS api tests + * LICENSE: GPLv2+ - See COPYING in the top level directory + * PURPOSE: Test for the RegOpenKeyExW alignment + * PROGRAMMER: Mark Jansen + */ +#include + +#define WIN32_NO_STATUS +#include + +#include +struct Unalignment1 +{ + char dum; + WCHAR buffer[20]; +} Unalignment1; +struct Unalignment2 +{ + char dum; + HKEY hk; +} Unalignment2; +#include + + +#define TEST_STR L".exe" + + +START_TEST(RegOpenKeyExW) +{ + struct Unalignment1 un; + struct Unalignment2 un2; + HKEY hk; + LONG lRes; + + memcpy(un.buffer, TEST_STR, sizeof(TEST_STR)); + un2.hk = 0; + + lRes = RegOpenKeyExW(HKEY_CLASSES_ROOT, TEST_STR, 0, KEY_READ, &hk); + ok_int(lRes, ERROR_SUCCESS); + if (lRes) + return; + RegCloseKey(hk); + + ok_hex(((ULONG_PTR)un.buffer) % 2, 1); + lRes = RegOpenKeyExW(HKEY_CLASSES_ROOT, un.buffer, 0, KEY_READ, &hk); + ok_int(lRes, ERROR_SUCCESS); + if (!lRes) + RegCloseKey(hk); + + ok_hex(((ULONG_PTR)&un2.hk) % 2, 1); + lRes = RegOpenKeyExW(HKEY_CLASSES_ROOT, TEST_STR, 0, KEY_READ, &un2.hk); + ok_int(lRes, ERROR_SUCCESS); + if (!lRes) + { + hk = un2.hk; + RegCloseKey(hk); + } +} diff --git a/rostests/apitests/advapi32/testlist.c b/rostests/apitests/advapi32/testlist.c index a34bf766065..536162388fc 100644 --- a/rostests/apitests/advapi32/testlist.c +++ b/rostests/apitests/advapi32/testlist.c @@ -12,6 +12,7 @@ extern void func_LockServiceDatabase(void); extern void func_QueryServiceConfig2(void); extern void func_RegEnumKey(void); extern void func_RegEnumValueW(void); +extern void func_RegOpenKeyExW(void); extern void func_RegQueryInfoKey(void); extern void func_RegQueryValueExW(void); extern void func_RtlEncryptMemory(void); @@ -31,6 +32,7 @@ const struct test winetest_testlist[] = { "RegEnumKey", func_RegEnumKey }, { "RegEnumValueW", func_RegEnumValueW }, { "RegQueryInfoKey", func_RegQueryInfoKey }, + { "RegOpenKeyExW", func_RegOpenKeyExW }, { "RegQueryValueExW", func_RegQueryValueExW }, { "RtlEncryptMemory", func_RtlEncryptMemory }, { "SaferIdentifyLevel", func_SaferIdentifyLevel }, -- 2.17.1