advapi32: Fix self-relative security descriptor creation for 64-bit.

This commit is contained in:
Alexandre Julliard 2009-06-16 13:28:00 +02:00
parent ac5002ed2b
commit 3a33ff7df9
1 changed files with 8 additions and 8 deletions

View File

@ -54,7 +54,7 @@ static BYTE ParseAceStringType(LPCWSTR* StringAcl);
static DWORD ParseAceStringRights(LPCWSTR* StringAcl); static DWORD ParseAceStringRights(LPCWSTR* StringAcl);
static BOOL ParseStringSecurityDescriptorToSecurityDescriptor( static BOOL ParseStringSecurityDescriptorToSecurityDescriptor(
LPCWSTR StringSecurityDescriptor, LPCWSTR StringSecurityDescriptor,
SECURITY_DESCRIPTOR* SecurityDescriptor, SECURITY_DESCRIPTOR_RELATIVE* SecurityDescriptor,
LPDWORD cBytes); LPDWORD cBytes);
static DWORD ParseAclStringFlags(LPCWSTR* StringAcl); static DWORD ParseAclStringFlags(LPCWSTR* StringAcl);
@ -4060,7 +4060,7 @@ lerr:
*/ */
static BOOL ParseStringSecurityDescriptorToSecurityDescriptor( static BOOL ParseStringSecurityDescriptorToSecurityDescriptor(
LPCWSTR StringSecurityDescriptor, LPCWSTR StringSecurityDescriptor,
SECURITY_DESCRIPTOR* SecurityDescriptor, SECURITY_DESCRIPTOR_RELATIVE* SecurityDescriptor,
LPDWORD cBytes) LPDWORD cBytes)
{ {
BOOL bret = FALSE; BOOL bret = FALSE;
@ -4073,7 +4073,7 @@ static BOOL ParseStringSecurityDescriptorToSecurityDescriptor(
*cBytes = sizeof(SECURITY_DESCRIPTOR); *cBytes = sizeof(SECURITY_DESCRIPTOR);
if (SecurityDescriptor) if (SecurityDescriptor)
lpNext = ((LPBYTE) SecurityDescriptor) + sizeof(SECURITY_DESCRIPTOR); lpNext = (LPBYTE)(SecurityDescriptor + 1);
while (*StringSecurityDescriptor) while (*StringSecurityDescriptor)
{ {
@ -4111,7 +4111,7 @@ static BOOL ParseStringSecurityDescriptorToSecurityDescriptor(
if (SecurityDescriptor) if (SecurityDescriptor)
{ {
SecurityDescriptor->Owner = (PSID)(lpNext - (LPBYTE)SecurityDescriptor); SecurityDescriptor->Owner = lpNext - (LPBYTE)SecurityDescriptor;
lpNext += bytes; /* Advance to next token */ lpNext += bytes; /* Advance to next token */
} }
@ -4129,7 +4129,7 @@ static BOOL ParseStringSecurityDescriptorToSecurityDescriptor(
if (SecurityDescriptor) if (SecurityDescriptor)
{ {
SecurityDescriptor->Group = (PSID)(lpNext - (LPBYTE)SecurityDescriptor); SecurityDescriptor->Group = lpNext - (LPBYTE)SecurityDescriptor;
lpNext += bytes; /* Advance to next token */ lpNext += bytes; /* Advance to next token */
} }
@ -4149,7 +4149,7 @@ static BOOL ParseStringSecurityDescriptorToSecurityDescriptor(
if (SecurityDescriptor) if (SecurityDescriptor)
{ {
SecurityDescriptor->Control |= SE_DACL_PRESENT | flags; SecurityDescriptor->Control |= SE_DACL_PRESENT | flags;
SecurityDescriptor->Dacl = (PACL)(lpNext - (LPBYTE)SecurityDescriptor); SecurityDescriptor->Dacl = lpNext - (LPBYTE)SecurityDescriptor;
lpNext += bytes; /* Advance to next token */ lpNext += bytes; /* Advance to next token */
} }
@ -4169,7 +4169,7 @@ static BOOL ParseStringSecurityDescriptorToSecurityDescriptor(
if (SecurityDescriptor) if (SecurityDescriptor)
{ {
SecurityDescriptor->Control |= SE_SACL_PRESENT | flags; SecurityDescriptor->Control |= SE_SACL_PRESENT | flags;
SecurityDescriptor->Sacl = (PACL)(lpNext - (LPBYTE)SecurityDescriptor); SecurityDescriptor->Sacl = lpNext - (LPBYTE)SecurityDescriptor;
lpNext += bytes; /* Advance to next token */ lpNext += bytes; /* Advance to next token */
} }
@ -4265,7 +4265,7 @@ BOOL WINAPI ConvertStringSecurityDescriptorToSecurityDescriptorW(
psd->Control |= SE_SELF_RELATIVE; psd->Control |= SE_SELF_RELATIVE;
if (!ParseStringSecurityDescriptorToSecurityDescriptor(StringSecurityDescriptor, if (!ParseStringSecurityDescriptorToSecurityDescriptor(StringSecurityDescriptor,
psd, &cBytes)) (SECURITY_DESCRIPTOR_RELATIVE *)psd, &cBytes))
{ {
LocalFree(psd); LocalFree(psd);
goto lend; goto lend;