Synchronize up to trunk's revision r57784.
[reactos.git] / ntoskrnl / se / sid.c
index 93b8bde..be8625e 100644 (file)
@@ -60,34 +60,34 @@ VOID
 NTAPI
 FreeInitializedSids(VOID)
 {
-    if (SeNullSid) ExFreePool(SeNullSid);
-    if (SeWorldSid) ExFreePool(SeWorldSid);
-    if (SeLocalSid) ExFreePool(SeLocalSid);
-    if (SeCreatorOwnerSid) ExFreePool(SeCreatorOwnerSid);
-    if (SeCreatorGroupSid) ExFreePool(SeCreatorGroupSid);
-    if (SeCreatorOwnerServerSid) ExFreePool(SeCreatorOwnerServerSid);
-    if (SeCreatorGroupServerSid) ExFreePool(SeCreatorGroupServerSid);
-    if (SeNtAuthoritySid) ExFreePool(SeNtAuthoritySid);
-    if (SeDialupSid) ExFreePool(SeDialupSid);
-    if (SeNetworkSid) ExFreePool(SeNetworkSid);
-    if (SeBatchSid) ExFreePool(SeBatchSid);
-    if (SeInteractiveSid) ExFreePool(SeInteractiveSid);
-    if (SeServiceSid) ExFreePool(SeServiceSid);
-    if (SePrincipalSelfSid) ExFreePool(SePrincipalSelfSid);
-    if (SeLocalSystemSid) ExFreePool(SeLocalSystemSid);
-    if (SeAuthenticatedUserSid) ExFreePool(SeAuthenticatedUserSid);
-    if (SeRestrictedCodeSid) ExFreePool(SeRestrictedCodeSid);
-    if (SeAliasAdminsSid) ExFreePool(SeAliasAdminsSid);
-    if (SeAliasUsersSid) ExFreePool(SeAliasUsersSid);
-    if (SeAliasGuestsSid) ExFreePool(SeAliasGuestsSid);
-    if (SeAliasPowerUsersSid) ExFreePool(SeAliasPowerUsersSid);
-    if (SeAliasAccountOpsSid) ExFreePool(SeAliasAccountOpsSid);
-    if (SeAliasSystemOpsSid) ExFreePool(SeAliasSystemOpsSid);
-    if (SeAliasPrintOpsSid) ExFreePool(SeAliasPrintOpsSid);
-    if (SeAliasBackupOpsSid) ExFreePool(SeAliasBackupOpsSid);
-    if (SeAuthenticatedUsersSid) ExFreePool(SeAuthenticatedUsersSid);
-    if (SeRestrictedSid) ExFreePool(SeRestrictedSid);
-    if (SeAnonymousLogonSid) ExFreePool(SeAnonymousLogonSid);
+    if (SeNullSid) ExFreePoolWithTag(SeNullSid, TAG_SID);
+    if (SeWorldSid) ExFreePoolWithTag(SeWorldSid, TAG_SID);
+    if (SeLocalSid) ExFreePoolWithTag(SeLocalSid, TAG_SID);
+    if (SeCreatorOwnerSid) ExFreePoolWithTag(SeCreatorOwnerSid, TAG_SID);
+    if (SeCreatorGroupSid) ExFreePoolWithTag(SeCreatorGroupSid, TAG_SID);
+    if (SeCreatorOwnerServerSid) ExFreePoolWithTag(SeCreatorOwnerServerSid, TAG_SID);
+    if (SeCreatorGroupServerSid) ExFreePoolWithTag(SeCreatorGroupServerSid, TAG_SID);
+    if (SeNtAuthoritySid) ExFreePoolWithTag(SeNtAuthoritySid, TAG_SID);
+    if (SeDialupSid) ExFreePoolWithTag(SeDialupSid, TAG_SID);
+    if (SeNetworkSid) ExFreePoolWithTag(SeNetworkSid, TAG_SID);
+    if (SeBatchSid) ExFreePoolWithTag(SeBatchSid, TAG_SID);
+    if (SeInteractiveSid) ExFreePoolWithTag(SeInteractiveSid, TAG_SID);
+    if (SeServiceSid) ExFreePoolWithTag(SeServiceSid, TAG_SID);
+    if (SePrincipalSelfSid) ExFreePoolWithTag(SePrincipalSelfSid, TAG_SID);
+    if (SeLocalSystemSid) ExFreePoolWithTag(SeLocalSystemSid, TAG_SID);
+    if (SeAuthenticatedUserSid) ExFreePoolWithTag(SeAuthenticatedUserSid, TAG_SID);
+    if (SeRestrictedCodeSid) ExFreePoolWithTag(SeRestrictedCodeSid, TAG_SID);
+    if (SeAliasAdminsSid) ExFreePoolWithTag(SeAliasAdminsSid, TAG_SID);
+    if (SeAliasUsersSid) ExFreePoolWithTag(SeAliasUsersSid, TAG_SID);
+    if (SeAliasGuestsSid) ExFreePoolWithTag(SeAliasGuestsSid, TAG_SID);
+    if (SeAliasPowerUsersSid) ExFreePoolWithTag(SeAliasPowerUsersSid, TAG_SID);
+    if (SeAliasAccountOpsSid) ExFreePoolWithTag(SeAliasAccountOpsSid, TAG_SID);
+    if (SeAliasSystemOpsSid) ExFreePoolWithTag(SeAliasSystemOpsSid, TAG_SID);
+    if (SeAliasPrintOpsSid) ExFreePoolWithTag(SeAliasPrintOpsSid, TAG_SID);
+    if (SeAliasBackupOpsSid) ExFreePoolWithTag(SeAliasBackupOpsSid, TAG_SID);
+    if (SeAuthenticatedUsersSid) ExFreePoolWithTag(SeAuthenticatedUsersSid, TAG_SID);
+    if (SeRestrictedSid) ExFreePoolWithTag(SeRestrictedSid, TAG_SID);
+    if (SeAnonymousLogonSid) ExFreePoolWithTag(SeAnonymousLogonSid, TAG_SID);
 }
 
 BOOLEAN
@@ -266,7 +266,6 @@ SepCaptureSid(IN PSID InputSid,
 {
     ULONG SidSize = 0;
     PISID NewSid, Sid = (PISID)InputSid;
-    NTSTATUS Status;
 
     PAGED_CODE();
 
@@ -274,14 +273,9 @@ SepCaptureSid(IN PSID InputSid,
     {
         _SEH2_TRY
         {
-            ProbeForRead(Sid,
-                         FIELD_OFFSET(SID,
-                                      SubAuthority),
-                         sizeof(UCHAR));
+            ProbeForRead(Sid, FIELD_OFFSET(SID, SubAuthority), sizeof(UCHAR));
             SidSize = RtlLengthRequiredSid(Sid->SubAuthorityCount);
-            ProbeForRead(Sid,
-                         SidSize,
-                         sizeof(UCHAR));
+            ProbeForRead(Sid, SidSize, sizeof(UCHAR));
         }
         _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
         {
@@ -291,58 +285,43 @@ SepCaptureSid(IN PSID InputSid,
         _SEH2_END;
 
         /* allocate a SID and copy it */
-        NewSid = ExAllocatePool(PoolType,
-                                SidSize);
-        if (NewSid != NULL)
+        NewSid = ExAllocatePoolWithTag(PoolType, SidSize, TAG_SID);
+        if (!NewSid)
+            return STATUS_INSUFFICIENT_RESOURCES;
+
+        _SEH2_TRY
         {
-            _SEH2_TRY
-            {
-                RtlCopyMemory(NewSid,
-                              Sid,
-                              SidSize);
+            RtlCopyMemory(NewSid, Sid, SidSize);
 
-                *CapturedSid = NewSid;
-            }
-            _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
-            {
-                /* Free the SID and return the exception code */
-                ExFreePool(NewSid);
-                _SEH2_YIELD(return _SEH2_GetExceptionCode());
-            }
-            _SEH2_END;
+            *CapturedSid = NewSid;
         }
-        else
+        _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
         {
-            Status = STATUS_INSUFFICIENT_RESOURCES;
+            /* Free the SID and return the exception code */
+            ExFreePoolWithTag(NewSid, TAG_SID);
+            _SEH2_YIELD(return _SEH2_GetExceptionCode());
         }
+        _SEH2_END;
     }
     else if (!CaptureIfKernel)
     {
         *CapturedSid = InputSid;
-        return STATUS_SUCCESS;
     }
     else
     {
         SidSize = RtlLengthRequiredSid(Sid->SubAuthorityCount);
 
         /* allocate a SID and copy it */
-        NewSid = ExAllocatePool(PoolType,
-                                SidSize);
-        if (NewSid != NULL)
-        {
-            RtlCopyMemory(NewSid,
-                          Sid,
-                          SidSize);
+        NewSid = ExAllocatePoolWithTag(PoolType, SidSize, TAG_SID);
+        if (NewSid == NULL)
+            return STATUS_INSUFFICIENT_RESOURCES;
 
-            *CapturedSid = NewSid;
-        }
-        else
-        {
-            Status = STATUS_INSUFFICIENT_RESOURCES;
-        }
+        RtlCopyMemory(NewSid, Sid, SidSize);
+
+        *CapturedSid = NewSid;
     }
 
-    return Status;
+    return STATUS_SUCCESS;
 }
 
 VOID
@@ -357,7 +336,7 @@ SepReleaseSid(IN PSID CapturedSid,
         (AccessMode != KernelMode ||
          (AccessMode == KernelMode && CaptureIfKernel)))
     {
-        ExFreePool(CapturedSid);
+        ExFreePoolWithTag(CapturedSid, TAG_SID);
     }
 }