ObInitializeObject(): Pre-clear object HEADER to prevent undeterministic bugs.
authorshort <>
Wed, 13 Aug 2003 08:51:37 +0000 (08:51 +0000)
committershort <>
Wed, 13 Aug 2003 08:51:37 +0000 (08:51 +0000)
ObpPerformRetentionChecks(): Do not ExFreePool() FILE_OBJECT to aid debugging.

ntoskrnl/ob/object.c

index c040e5b..579beae 100644 (file)
@@ -74,6 +74,8 @@ VOID ObInitializeObject(POBJECT_HEADER ObjectHeader,
                       ObjectAttributes && (ObjectAttributes->Attributes & OBJ_INHERIT) ? TRUE : FALSE,
                       Handle);
      }
+   /* LIBCAPTIVE: */
+   memset(HEADER_TO_BODY(ObjectHeader),0,Type->NonpagedPoolCharge);
 }
 
 
@@ -481,7 +483,8 @@ ObpPerformRetentionChecks(POBJECT_HEADER Header)
          RtlFreeUnicodeString(&Header->Name);
        }
       DPRINT("ObPerformRetentionChecks() = Freeing object\n");
-      ExFreePool(Header);
+      if (Header->ObjectType != IoFileObjectType)      /* LIBCAPTIVE */
+       ExFreePool(Header);
     }
   return(STATUS_SUCCESS);
 }