https://git.reactos.org/?p=reactos.git;a=commitdiff;h=4d376dfd6487d63c3374f…
commit 4d376dfd6487d63c3374f62d75dcb82a4563aac3
Author: Eric Kohl <eric.kohl(a)reactos.org>
AuthorDate: Sat Dec 14 20:09:27 2024 +0100
Commit: Eric Kohl <eric.kohl(a)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;
}