From 24c6b554c9e22c7affbbb789caf7b9a59c3e01a4 Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Tue, 1 Jul 2014 19:26:01 -0600 Subject: [PATCH] Implement RegSetKeySecurity on top of NtSetSecurityObject. --- debian/changelog | 3 +- ...-RegSetKeySecurity-on-top-of-NtSetSe.patch | 78 +++++++++++++++++++ .../a140df16-0187-11e4-a050-0090f5c75ad5.def | 3 + patches/patch-list.patch | 3 +- 4 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 patches/13-Misc_ACL/0003-advapi-Implement-RegSetKeySecurity-on-top-of-NtSetSe.patch create mode 100644 patches/13-Misc_ACL/a140df16-0187-11e4-a050-0090f5c75ad5.def diff --git a/debian/changelog b/debian/changelog index b79793d4..b2456f5f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ wine-compholio (1.7.21) UNRELEASED; urgency=low * Added NT4 support to the process ACL tests. - -- Erich E. Hoover Tue, 01 Jul 2014 18:30:47 -0600 + * Implement RegSetKeySecurity on top of NtSetSecurityObject. + -- Erich E. Hoover Tue, 01 Jul 2014 19:25:52 -0600 wine-compholio (1.7.21) unstable; urgency=low * Remove several patches (accepted upstream). diff --git a/patches/13-Misc_ACL/0003-advapi-Implement-RegSetKeySecurity-on-top-of-NtSetSe.patch b/patches/13-Misc_ACL/0003-advapi-Implement-RegSetKeySecurity-on-top-of-NtSetSe.patch new file mode 100644 index 00000000..caa98b1b --- /dev/null +++ b/patches/13-Misc_ACL/0003-advapi-Implement-RegSetKeySecurity-on-top-of-NtSetSe.patch @@ -0,0 +1,78 @@ +From f578524f71033b89cbb1fda1d3ac676f2d330ea6 Mon Sep 17 00:00:00 2001 +From: "Erich E. Hoover" +Date: Tue, 1 Jul 2014 19:23:30 -0600 +Subject: advapi: Implement RegSetKeySecurity on top of NtSetSecurityObject. + +--- + dlls/advapi32/registry.c | 4 ++-- + dlls/advapi32/tests/registry.c | 30 +++++++++++++++--------------- + 2 files changed, 17 insertions(+), 17 deletions(-) + +diff --git a/dlls/advapi32/registry.c b/dlls/advapi32/registry.c +index c7ba3ef..253e708 100644 +--- a/dlls/advapi32/registry.c ++++ b/dlls/advapi32/registry.c +@@ -2469,9 +2469,9 @@ LSTATUS WINAPI RegSetKeySecurity( HKEY hkey, SECURITY_INFORMATION SecurityInfo, + if (!pSecurityDesc) + return ERROR_INVALID_PARAMETER; + +- FIXME(":(%p,%d,%p): stub\n",hkey,SecurityInfo,pSecurityDesc); ++ TRACE("(%p,%d,%p)\n",hkey,SecurityInfo,pSecurityDesc); + +- return ERROR_SUCCESS; ++ return RtlNtStatusToDosError( NtSetSecurityObject( hkey, SecurityInfo, pSecurityDesc ) ); + } + + +diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c +index 7c4db40..5069600 100644 +--- a/dlls/advapi32/tests/registry.c ++++ b/dlls/advapi32/tests/registry.c +@@ -1070,14 +1070,15 @@ static void test_reg_open_key(void) + } + else + { +- /* The "sanctioned" methods of setting a registry ACL aren't implemented in Wine. */ +- bRet = SetKernelObjectSecurity(hkRoot64, DACL_SECURITY_INFORMATION, sd); +- ok(bRet == TRUE, +- "Expected SetKernelObjectSecurity to return TRUE, got %d, last error %u\n", bRet, GetLastError()); ++ LONG error; + +- bRet = SetKernelObjectSecurity(hkRoot32, DACL_SECURITY_INFORMATION, sd); +- ok(bRet == TRUE, +- "Expected SetKernelObjectSecurity to return TRUE, got %d, last error %u\n", bRet, GetLastError()); ++ error = RegSetKeySecurity(hkRoot64, DACL_SECURITY_INFORMATION, sd); ++ ok(error == ERROR_SUCCESS, ++ "Expected RegSetKeySecurity to return success, got error %u\n", error); ++ ++ bRet = RegSetKeySecurity(hkRoot32, DACL_SECURITY_INFORMATION, sd); ++ ok(error == ERROR_SUCCESS, ++ "Expected RegSetKeySecurity to return success, got error %u\n", error); + + hkResult = NULL; + ret = RegOpenKeyExA(HKEY_LOCAL_MACHINE, "Software\\Wine", 0, KEY_WOW64_64KEY | KEY_READ, &hkResult); +@@ -1231,14 +1232,13 @@ static void test_reg_create_key(void) + } + else + { +- /* The "sanctioned" methods of setting a registry ACL aren't implemented in Wine. */ +- bRet = SetKernelObjectSecurity(hkRoot64, DACL_SECURITY_INFORMATION, sd); +- ok(bRet == TRUE, +- "Expected SetKernelObjectSecurity to return TRUE, got %d, last error %u\n", bRet, GetLastError()); +- +- bRet = SetKernelObjectSecurity(hkRoot32, DACL_SECURITY_INFORMATION, sd); +- ok(bRet == TRUE, +- "Expected SetKernelObjectSecurity to return TRUE, got %d, last error %u\n", bRet, GetLastError()); ++ ret = RegSetKeySecurity(hkRoot64, DACL_SECURITY_INFORMATION, sd); ++ ok(ret == ERROR_SUCCESS, ++ "Expected RegSetKeySecurity to return success, got error %u\n", ret); ++ ++ ret = RegSetKeySecurity(hkRoot32, DACL_SECURITY_INFORMATION, sd); ++ ok(ret == ERROR_SUCCESS, ++ "Expected RegSetKeySecurity to return success, got error %u\n", ret); + + hkey1 = NULL; + ret = RegCreateKeyExA(HKEY_LOCAL_MACHINE, "Software\\Wine", 0, NULL, 0, +-- +1.7.9.5 + diff --git a/patches/13-Misc_ACL/a140df16-0187-11e4-a050-0090f5c75ad5.def b/patches/13-Misc_ACL/a140df16-0187-11e4-a050-0090f5c75ad5.def new file mode 100644 index 00000000..8d067dc5 --- /dev/null +++ b/patches/13-Misc_ACL/a140df16-0187-11e4-a050-0090f5c75ad5.def @@ -0,0 +1,3 @@ +Revision: 1 +Author: Erich E. Hoover +Title: Implement RegSetKeySecurity on top of NtSetSecurityObject. diff --git a/patches/patch-list.patch b/patches/patch-list.patch index 35ff514c..8cbdb898 100644 --- a/patches/patch-list.patch +++ b/patches/patch-list.patch @@ -6,7 +6,7 @@ diff --git a/libs/wine/config.c b/libs/wine/config.c index a273502..5fa0cd5 100644 --- a/libs/wine/config.c +++ b/libs/wine/config.c -@@ -478,6 +478,43 @@ const char *wine_get_version(void) +@@ -478,6 +478,44 @@ const char *wine_get_version(void) return PACKAGE_VERSION; } @@ -29,6 +29,7 @@ index a273502..5fa0cd5 100644 + { "3d7c4774-9e7f-11e3-9cfc-0090f5c75ad5:1", "Erich E. Hoover", "Implement missing fonts expected by Silverlight." }, + { "e7581ed7-12b3-4ed3-835b-5a62afbf9c85:4", "Sebastian Lackner", "Use lockfree implementation for get_cached_fd." }, + { "3405aa34-f341-11e3-83ce-0090f5c75ad5:1", "Erich E. Hoover", "Add default security descriptor ownership and DACLs for processes." }, ++ { "a140df16-0187-11e4-a050-0090f5c75ad5:1", "Erich E. Hoover", "Implement RegSetKeySecurity on top of NtSetSecurityObject." }, + { "0b21d7ac-0387-4493-aa38-fbafe3e749f5:2", "Michael Müller", "Decrease minimum SetTimer interval to 5 ms." }, + { "2394843e-2bc4-4fa4-8368-1ef32093b89e:1", "Michael Müller", "Allow changing strict draw ordering through an exported function." }, + { "255473fa-4e0a-4f51-952b-4deecc1a2181:1", "Michael Müller", "Indicate direct rendering through OpenGL extension." },