advapi32: Make ConvertStringSecurityDescriptorToSecurityDescriptor write the ACL.
This commit is contained in:
parent
611f57bc20
commit
8188ce6fb1
@ -3239,6 +3239,8 @@ static BOOL ParseStringAclToAcl(LPCWSTR StringAcl, LPDWORD lpdwFlags,
|
|||||||
DWORD val;
|
DWORD val;
|
||||||
DWORD sidlen;
|
DWORD sidlen;
|
||||||
DWORD length = sizeof(ACL);
|
DWORD length = sizeof(ACL);
|
||||||
|
DWORD acesize = 0;
|
||||||
|
DWORD acecount = 0;
|
||||||
PACCESS_ALLOWED_ACE pAce = NULL; /* pointer to current ACE */
|
PACCESS_ALLOWED_ACE pAce = NULL; /* pointer to current ACE */
|
||||||
|
|
||||||
TRACE("%s\n", debugstr_w(StringAcl));
|
TRACE("%s\n", debugstr_w(StringAcl));
|
||||||
@ -3308,10 +3310,32 @@ static BOOL ParseStringAclToAcl(LPCWSTR StringAcl, LPDWORD lpdwFlags,
|
|||||||
goto lerr;
|
goto lerr;
|
||||||
StringAcl++;
|
StringAcl++;
|
||||||
|
|
||||||
length += sizeof(ACCESS_ALLOWED_ACE) - sizeof(DWORD) + sidlen;
|
acesize = sizeof(ACCESS_ALLOWED_ACE) - sizeof(DWORD) + sidlen;
|
||||||
|
length += acesize;
|
||||||
|
if (pAce)
|
||||||
|
{
|
||||||
|
pAce->Header.AceSize = acesize;
|
||||||
|
pAce = (PACCESS_ALLOWED_ACE)((LPBYTE)pAce + acesize);
|
||||||
|
}
|
||||||
|
acecount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
*cBytes = length;
|
*cBytes = length;
|
||||||
|
|
||||||
|
if (length > 0xffff)
|
||||||
|
{
|
||||||
|
ERR("ACL too large\n");
|
||||||
|
goto lerr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pAcl)
|
||||||
|
{
|
||||||
|
pAcl->AclRevision = ACL_REVISION;
|
||||||
|
pAcl->Sbz1 = 0;
|
||||||
|
pAcl->AclSize = length;
|
||||||
|
pAcl->AceCount = acecount++;
|
||||||
|
pAcl->Sbz2 = 0;
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
lerr:
|
lerr:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user