[ADVAPI32]
[reactos.git] / reactos / dll / win32 / advapi32 / sec / sid.c
index 7efe2a3..ed466a5 100644 (file)
@@ -506,7 +506,7 @@ static BOOL DumpAce(LPVOID pace, WCHAR **pwptr, ULONG *plen)
         return FALSE;
     }
 
-    piace = (ACCESS_ALLOWED_ACE *)pace;
+    piace = pace;
     DumpString(&openbr, 1, pwptr, plen);
     switch (piace->Header.AceType)
     {
@@ -789,7 +789,6 @@ static DWORD ComputeStringSidSize(LPCWSTR StringSid)
     return GetSidLengthRequired(0);
 }
 
-
 /******************************************************************************
  * ParseStringSidToSid
  */
@@ -806,6 +805,9 @@ static BOOL ParseStringSidToSid(LPCWSTR StringSid, PSID pSid, LPDWORD cBytes)
         return FALSE;
     }
 
+    while (*StringSid == ' ')
+        StringSid++;
+
     *cBytes = ComputeStringSidSize(StringSid);
     if (!pisid) /* Simply compute the size */
     {
@@ -900,7 +902,6 @@ lend:
     return bret;
 }
 
-
 /******************************************************************************
  * ParseAclStringFlags
  */
@@ -930,7 +931,6 @@ static DWORD ParseAclStringFlags(LPCWSTR* StringAcl)
     return flags;
 }
 
-
 /******************************************************************************
  * ParseAceStringType
  */
@@ -1182,7 +1182,7 @@ lerr:
  */
 static BOOL ParseStringSecurityDescriptorToSecurityDescriptor(
     LPCWSTR StringSecurityDescriptor,
-    SECURITY_DESCRIPTOR* SecurityDescriptor,
+    SECURITY_DESCRIPTOR_RELATIVE* SecurityDescriptor,
     LPDWORD cBytes)
 {
     BOOL bret = FALSE;
@@ -1195,7 +1195,7 @@ static BOOL ParseStringSecurityDescriptorToSecurityDescriptor(
     *cBytes = sizeof(SECURITY_DESCRIPTOR);
 
     if (SecurityDescriptor)
-        lpNext = ((LPBYTE) SecurityDescriptor) + sizeof(SECURITY_DESCRIPTOR);
+        lpNext = (LPBYTE)(SecurityDescriptor + 1);
 
     while (*StringSecurityDescriptor)
     {
@@ -1233,7 +1233,7 @@ static BOOL ParseStringSecurityDescriptorToSecurityDescriptor(
 
                 if (SecurityDescriptor)
                 {
-                    SecurityDescriptor->Owner = (PSID)(lpNext - (LPBYTE)SecurityDescriptor);
+                    SecurityDescriptor->Owner = lpNext - (LPBYTE)SecurityDescriptor;
                     lpNext += bytes; /* Advance to next token */
                 }
 
@@ -1251,7 +1251,7 @@ static BOOL ParseStringSecurityDescriptorToSecurityDescriptor(
 
                 if (SecurityDescriptor)
                 {
-                    SecurityDescriptor->Group = (PSID)(lpNext - (LPBYTE)SecurityDescriptor);
+                    SecurityDescriptor->Group = lpNext - (LPBYTE)SecurityDescriptor;
                     lpNext += bytes; /* Advance to next token */
                 }
 
@@ -1271,7 +1271,7 @@ static BOOL ParseStringSecurityDescriptorToSecurityDescriptor(
                 if (SecurityDescriptor)
                 {
                     SecurityDescriptor->Control |= SE_DACL_PRESENT | flags;
-                    SecurityDescriptor->Dacl = (PACL)(lpNext - (LPBYTE)SecurityDescriptor);
+                    SecurityDescriptor->Dacl = lpNext - (LPBYTE)SecurityDescriptor;
                     lpNext += bytes; /* Advance to next token */
                }
 
@@ -1291,7 +1291,7 @@ static BOOL ParseStringSecurityDescriptorToSecurityDescriptor(
                 if (SecurityDescriptor)
                 {
                     SecurityDescriptor->Control |= SE_SACL_PRESENT | flags;
-                    SecurityDescriptor->Sacl = (PACL)(lpNext - (LPBYTE)SecurityDescriptor);
+                    SecurityDescriptor->Sacl = lpNext - (LPBYTE)SecurityDescriptor;
                     lpNext += bytes; /* Advance to next token */
                }
 
@@ -1360,7 +1360,7 @@ BOOL WINAPI ConvertStringSecurityDescriptorToSecurityDescriptorW(
     psd->Control |= SE_SELF_RELATIVE;
 
     if (!ParseStringSecurityDescriptorToSecurityDescriptor(StringSecurityDescriptor,
-        psd, &cBytes))
+             (SECURITY_DESCRIPTOR_RELATIVE *)psd, &cBytes))
     {
         LocalFree(psd);
        goto lend;