[ros-diffs] [fireball] 29387: - Don't try to copy an uninitialized bitmap's contents (it worked only because it was zeroed, and thus zero-size RtlCopy and ExFreePool(NULL)).

fireball at svn.reactos.org fireball at svn.reactos.org
Wed Oct 3 22:58:44 CEST 2007


Author: fireball
Date: Thu Oct  4 00:58:44 2007
New Revision: 29387

URL: http://svn.reactos.org/svn/reactos?rev=29387&view=rev
Log:
- Don't try to copy an uninitialized bitmap's contents (it worked only because it was zeroed, and thus zero-size RtlCopy and ExFreePool(NULL)).

Modified:
    trunk/reactos/lib/cmlib/hivebin.c

Modified: trunk/reactos/lib/cmlib/hivebin.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/hivebin.c?rev=29387&r1=29386&r2=29387&view=diff
==============================================================================
--- trunk/reactos/lib/cmlib/hivebin.c (original)
+++ trunk/reactos/lib/cmlib/hivebin.c Thu Oct  4 00:58:44 2007
@@ -80,10 +80,14 @@
 
          BitmapBuffer = RegistryHive->Allocate(BitmapSize, TRUE);
          RtlZeroMemory(BitmapBuffer, BitmapSize);
-         RtlCopyMemory(BitmapBuffer,
-   		    RegistryHive->DirtyVector.Buffer,
-   		    RegistryHive->DirtyVector.SizeOfBitMap / 8);
-         RegistryHive->Free(RegistryHive->DirtyVector.Buffer);
+         if (RegistryHive->DirtyVector.SizeOfBitMap > 0)
+         {
+            ASSERT(RegistryHive->DirtyVector.Buffer);
+            RtlCopyMemory(BitmapBuffer,
+   		       RegistryHive->DirtyVector.Buffer,
+   		       RegistryHive->DirtyVector.SizeOfBitMap / 8);
+            RegistryHive->Free(RegistryHive->DirtyVector.Buffer);
+         }
          RtlInitializeBitMap(&RegistryHive->DirtyVector, BitmapBuffer,
                              BitmapSize * 8);
       }




More information about the Ros-diffs mailing list