- Reference/dereference the parent key in CmiObjectDelete.
authorHartmut Birr <osexpert@googlemail.com>
Sat, 30 Aug 2003 14:51:05 +0000 (14:51 +0000)
committerHartmut Birr <osexpert@googlemail.com>
Sat, 30 Aug 2003 14:51:05 +0000 (14:51 +0000)
  The call to CmiRemoveKeyFromList does dereference the parent and
  it is possible that the parent key is deleted before the
  subkey delete process is complete.

svn path=/trunk/; revision=5938

reactos/ntoskrnl/cm/regobj.c

index aba93f6..9c6d25c 100644 (file)
@@ -271,6 +271,8 @@ CmiObjectDelete(PVOID DeletedObject)
   DPRINT("Delete key object (%p)\n", DeletedObject);
 
   KeyObject = (PKEY_OBJECT) DeletedObject;
+  ObReferenceObject(KeyObject->ParentKey);
 
   if (!NT_SUCCESS(CmiRemoveKeyFromList(KeyObject)))
     {
@@ -292,6 +294,7 @@ CmiObjectDelete(PVOID DeletedObject)
          CmiSyncHives();
        }
     }
+  ObDereferenceObject(KeyObject->ParentKey);
   if (KeyObject->NumberOfSubKeys)
     {
       KEBUGCHECK(0);