Synchronize up to trunk's revision r57784.
[reactos.git] / ntoskrnl / se / sid.c
index d70a743..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
@@ -99,11 +99,11 @@ SepInitSecurityIDs(VOID)
     ULONG SidLength1;
     ULONG SidLength2;
     PULONG SubAuthority;
-    
+
     SidLength0 = RtlLengthRequiredSid(0);
     SidLength1 = RtlLengthRequiredSid(1);
     SidLength2 = RtlLengthRequiredSid(2);
-    
+
     /* create NullSid */
     SeNullSid = ExAllocatePoolWithTag(PagedPool, SidLength1, TAG_SID);
     SeWorldSid = ExAllocatePoolWithTag(PagedPool, SidLength1, TAG_SID);
@@ -150,9 +150,9 @@ SepInitSecurityIDs(VOID)
         SeAnonymousLogonSid == NULL)
     {
         FreeInitializedSids();
-        return(FALSE);
+        return FALSE;
     }
-    
+
     RtlInitializeSid(SeNullSid, &SeNullSidAuthority, 1);
     RtlInitializeSid(SeWorldSid, &SeWorldSidAuthority, 1);
     RtlInitializeSid(SeLocalSid, &SeLocalSidAuthority, 1);
@@ -181,7 +181,7 @@ SepInitSecurityIDs(VOID)
     RtlInitializeSid(SeAuthenticatedUsersSid, &SeNtSidAuthority, 1);
     RtlInitializeSid(SeRestrictedSid, &SeNtSidAuthority, 1);
     RtlInitializeSid(SeAnonymousLogonSid, &SeNtSidAuthority, 1);
-    
+
     SubAuthority = RtlSubAuthoritySid(SeNullSid, 0);
     *SubAuthority = SECURITY_NULL_RID;
     SubAuthority = RtlSubAuthoritySid(SeWorldSid, 0);
@@ -252,8 +252,8 @@ SepInitSecurityIDs(VOID)
     *SubAuthority = SECURITY_RESTRICTED_CODE_RID;
     SubAuthority = RtlSubAuthoritySid(SeAnonymousLogonSid, 0);
     *SubAuthority = SECURITY_ANONYMOUS_LOGON_RID;
-    
-    return(TRUE);
+
+    return TRUE;
 }
 
 NTSTATUS
@@ -266,22 +266,16 @@ SepCaptureSid(IN PSID InputSid,
 {
     ULONG SidSize = 0;
     PISID NewSid, Sid = (PISID)InputSid;
-    NTSTATUS Status;
-    
+
     PAGED_CODE();
-    
+
     if (AccessMode != KernelMode)
     {
         _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)
         {
@@ -289,60 +283,45 @@ SepCaptureSid(IN PSID InputSid,
             _SEH2_YIELD(return _SEH2_GetExceptionCode());
         }
         _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)
+    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);
-            
-            *CapturedSid = NewSid;
-        }
-        else
-        {
-            Status = STATUS_INSUFFICIENT_RESOURCES;
-        }
+        NewSid = ExAllocatePoolWithTag(PoolType, SidSize, TAG_SID);
+        if (NewSid == NULL)
+            return STATUS_INSUFFICIENT_RESOURCES;
+
+        RtlCopyMemory(NewSid, Sid, SidSize);
+
+        *CapturedSid = NewSid;
     }
-    
-    return Status;
+
+    return STATUS_SUCCESS;
 }
 
 VOID
@@ -352,12 +331,12 @@ SepReleaseSid(IN PSID CapturedSid,
               IN BOOLEAN CaptureIfKernel)
 {
     PAGED_CODE();
-    
-    if(CapturedSid != NULL &&
-       (AccessMode != KernelMode ||
-        (AccessMode == KernelMode && CaptureIfKernel)))
+
+    if (CapturedSid != NULL &&
+        (AccessMode != KernelMode ||
+         (AccessMode == KernelMode && CaptureIfKernel)))
     {
-        ExFreePool(CapturedSid);
+        ExFreePoolWithTag(CapturedSid, TAG_SID);
     }
 }