[ros-diffs] [weiden] 18255: don't leak memory in RegDeleteTree() when NtEnumerateKey() returns an unexpected error code (such as when there's insufficient system resources to perform the query)

weiden at svn.reactos.com weiden at svn.reactos.com
Tue Oct 4 01:01:18 CEST 2005


don't leak memory in RegDeleteTree() when NtEnumerateKey() returns an
unexpected error code (such as when there's insufficient system
resources to perform the query)
Modified: trunk/reactos/lib/advapi32/reg/reg.c
  _____  

Modified: trunk/reactos/lib/advapi32/reg/reg.c
--- trunk/reactos/lib/advapi32/reg/reg.c	2005-10-03 22:46:49 UTC
(rev 18254)
+++ trunk/reactos/lib/advapi32/reg/reg.c	2005-10-03 23:01:10 UTC
(rev 18255)
@@ -1479,14 +1479,18 @@

                 }
 
 SubKeyFailure:
-                ASSERT(newDelKeys != NULL);
-                RtlFreeHeap(ProcessHeap,
-                            0,
-                            newDelKeys);
+                /* newDelKeys can be NULL here when NtEnumerateKey
returned an
+                   error other than STATUS_BUFFER_TOO_SMALL or
STATUS_BUFFER_OVERFLOW! */
+                if (newDelKeys != NULL)
+                {
+                    RtlFreeHeap(ProcessHeap,
+                                0,
+                                newDelKeys);
+                }
 
 SubKeyFailureNoFree:
                 /* don't break, let's try to delete as many keys as
possible */
-                if (Status2 != STATUS_NO_MORE_ENTRIES &&
NT_SUCCESS(Status))
+                if (NT_SUCCESS(Status))
                 {
                     Status = Status2;
                 }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-diffs/attachments/20051004/d43f0bb0/attachment.html


More information about the Ros-diffs mailing list