Module: wine Branch: master Commit: 1a1c1d07eeb91b18abb90edd65c86c1c8476000c URL: https://gitlab.winehq.org/wine/wine/-/commit/1a1c1d07eeb91b18abb90edd65c86c1... Author: Zebediah Figura <zfigura(a)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);