[ros-diffs] [fireball] 29471: Mike Nordell <tamlin> - Add two checks for infinite loops. The latter gets triggered in some cases, a memory overwrite is suspected, or a race condition.

fireball at svn.reactos.org fireball at svn.reactos.org
Tue Oct 9 19:00:12 CEST 2007


Author: fireball
Date: Tue Oct  9 21:00:11 2007
New Revision: 29471

URL: http://svn.reactos.org/svn/reactos?rev=29471&view=rev
Log:
Mike Nordell <tamlin>
- Add two checks for infinite loops. The latter gets triggered in some cases, a memory overwrite is suspected, or a race condition.

Modified:
    trunk/reactos/ntoskrnl/cm/registry.c

Modified: trunk/reactos/ntoskrnl/cm/registry.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/cm/registry.c?rev=29471&r1=29470&r2=29471&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/cm/registry.c (original)
+++ trunk/reactos/ntoskrnl/cm/registry.c Tue Oct  9 21:00:11 2007
@@ -97,11 +97,21 @@
                     !(CurrentKey->Flags & KO_MARKED_FOR_DELETE))
                 {
                     ObDereferenceObject(CurrentKey);
+                    if (CurrentEntry == CmiKeyObjectListHead.Blink)
+                    {
+                        DPRINT("Registry loop detected! Crashing\n");
+                        KEBUGCHECK(0);
+                    }
                     CurrentEntry = CmiKeyObjectListHead.Blink;
                     Count++;
                 }
                 else
                 {
+                    if (CurrentEntry == CurrentEntry->Blink)
+                    {
+                        DPRINT("Registry loop detected! Crashing\n");
+                        KEBUGCHECK(0);
+                    }
                     CurrentEntry = CurrentEntry->Blink;
                 }
             }




More information about the Ros-diffs mailing list