Module: wine Branch: master Commit: 1a1c1d07eeb91b18abb90edd65c86c1c8476000c URL: https://gitlab.winehq.org/wine/wine/-/commit/1a1c1d07eeb91b18abb90edd65c86c1...
Author: Zebediah Figura zfigura@codeweavers.com Date: Sun Oct 15 12:59:32 2023 -0500
advapi32: Respect object type in SetSecurityInfo().
Do not try to treat types which are not kernel handles as kernel handles.
---
dlls/advapi32/security.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index 8dfb6548588..82feb00a0f0 100644 --- a/dlls/advapi32/security.c +++ b/dlls/advapi32/security.c @@ -2925,6 +2925,9 @@ DWORD WINAPI SetSecurityInfo(HANDLE handle, SE_OBJECT_TYPE ObjectType, PACL dacl = pDacl; NTSTATUS status;
+ if (!handle) + return ERROR_INVALID_HANDLE; + if (!InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION)) return ERROR_INVALID_SECURITY_DESCR;
@@ -3032,13 +3035,18 @@ DWORD WINAPI SetSecurityInfo(HANDLE handle, SE_OBJECT_TYPE ObjectType,
switch (ObjectType) { - case SE_SERVICE: - FIXME("stub: Service objects are not supported at this time.\n"); - status = STATUS_SUCCESS; /* Implement SetServiceObjectSecurity */ + case SE_FILE_OBJECT: + case SE_KERNEL_OBJECT: + case SE_WMIGUID_OBJECT: + case SE_REGISTRY_KEY: + status = NtSetSecurityObject(handle, SecurityInfo, &sd); break; + default: - status = NtSetSecurityObject(handle, SecurityInfo, &sd); + FIXME("unimplemented type %u, returning success\n", ObjectType); + status = STATUS_SUCCESS; break; + } if (dacl != pDacl) free(dacl);