Implement RegSetKeySecurity on top of NtSetSecurityObject.

This commit is contained in:
Erich E. Hoover 2014-07-01 19:26:01 -06:00
parent b861c5731d
commit 24c6b554c9
4 changed files with 85 additions and 2 deletions

3
debian/changelog vendored
View File

@ -1,6 +1,7 @@
wine-compholio (1.7.21) UNRELEASED; urgency=low
* Added NT4 support to the process ACL tests.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Tue, 01 Jul 2014 18:30:47 -0600
* Implement RegSetKeySecurity on top of NtSetSecurityObject.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Tue, 01 Jul 2014 19:25:52 -0600
wine-compholio (1.7.21) unstable; urgency=low
* Remove several patches (accepted upstream).

View File

@ -0,0 +1,78 @@
From f578524f71033b89cbb1fda1d3ac676f2d330ea6 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
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

View File

@ -0,0 +1,3 @@
Revision: 1
Author: Erich E. Hoover
Title: Implement RegSetKeySecurity on top of NtSetSecurityObject.

View File

@ -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." },