https://git.reactos.org/?p=reactos.git;a=commitdiff;h=4d376dfd6487d63c3374f6...
commit 4d376dfd6487d63c3374f62d75dcb82a4563aac3 Author: Eric Kohl eric.kohl@reactos.org AuthorDate: Sat Dec 14 20:09:27 2024 +0100 Commit: Eric Kohl eric.kohl@reactos.org CommitDate: Sat Dec 14 20:09:27 2024 +0100
[SETUPAPI] CM_Set_Class_Registry_PropertyW: Do not convert SD if ulLength is 0 --- dll/win32/setupapi/cfgmgr.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/dll/win32/setupapi/cfgmgr.c b/dll/win32/setupapi/cfgmgr.c index 0444611c184..f0b49db3fe9 100644 --- a/dll/win32/setupapi/cfgmgr.c +++ b/dll/win32/setupapi/cfgmgr.c @@ -7975,17 +7975,21 @@ CM_Set_Class_Registry_PropertyW(
if (ulProperty == CM_CRP_SECURITY_SDS) { - if (!ConvertStringSecurityDescriptorToSecurityDescriptorW((LPCWSTR)Buffer, - SDDL_REVISION_1, - &pSecurityDescriptor, - &SecurityDescriptorSize)) + if (ulLength != 0) { - ERR("ConvertStringSecurityDescriptorToSecurityDescriptorW() failed (Error %lu)\n", GetLastError()); - return CR_INVALID_DATA; + if (!ConvertStringSecurityDescriptorToSecurityDescriptorW((LPCWSTR)Buffer, + SDDL_REVISION_1, + &pSecurityDescriptor, + &SecurityDescriptorSize)) + { + ERR("ConvertStringSecurityDescriptorToSecurityDescriptorW() failed (Error %lu)\n", GetLastError()); + return CR_INVALID_DATA; + } + + Buffer = (PCVOID)pSecurityDescriptor; + ulLength = SecurityDescriptorSize; }
- Buffer = (PCVOID)pSecurityDescriptor; - ulLength = SecurityDescriptorSize; ulProperty = CM_CRP_SECURITY; ulType = REG_BINARY; }