Author: dchapyshev
Date: Wed Sep  2 15:07:12 2009
New Revision: 42981

URL: http://svn.reactos.org/svn/reactos?rev=42981&view=rev
Log:
- Free memory at initialization failure

Modified:
    trunk/reactos/ntoskrnl/se/sid.c

Modified: trunk/reactos/ntoskrnl/se/sid.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/se/sid.c?rev=42981&r1=42980&r2=42981&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/se/sid.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/se/sid.c [iso-8859-1] Wed Sep  2 15:07:12 2009
@@ -55,6 +55,40 @@
 PSID SeAnonymousLogonSid = NULL;
 
 /* FUNCTIONS 
******************************************************************/
+
+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);
+}
 
 BOOLEAN
 INIT_FUNCTION
@@ -99,7 +133,7 @@
     SeAuthenticatedUsersSid = ExAllocatePoolWithTag(PagedPool, SidLength1, 
TAG_SID);
     SeRestrictedSid = ExAllocatePoolWithTag(PagedPool, SidLength1, TAG_SID);
     SeAnonymousLogonSid = ExAllocatePoolWithTag(PagedPool, SidLength1, 
TAG_SID);
-    
+
     if (SeNullSid == NULL || SeWorldSid == NULL ||
         SeLocalSid == NULL || SeCreatorOwnerSid == NULL ||
         SeCreatorGroupSid == NULL || SeCreatorOwnerServerSid == NULL ||
@@ -115,7 +149,7 @@
         SeAuthenticatedUsersSid == NULL || SeRestrictedSid == NULL ||
         SeAnonymousLogonSid == NULL)
     {
-        /* FIXME: We're leaking memory here. */
+        FreeInitializedSids();
         return(FALSE);
     }
     


Reply via email to