[haiku-commits] r37508 - haiku/trunk/src/system/kernel/slab

  • From: ingo_weinhold@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 14 Jul 2010 02:48:45 +0200 (CEST)

Author: bonefish
Date: 2010-07-14 02:48:45 +0200 (Wed, 14 Jul 2010)
New Revision: 37508
Changeset: http://dev.haiku-os.org/changeset/37508

Modified:
   haiku/trunk/src/system/kernel/slab/ObjectCache.cpp
Log:
Patch by Lucian Adrian Grijincu (slightly modified by myself):
ObjectCache::ReturnObjectToSlab(): Check the returned object pointer for
obvious invalidity (out of bounds or misalignment).


Modified: haiku/trunk/src/system/kernel/slab/ObjectCache.cpp
===================================================================
--- haiku/trunk/src/system/kernel/slab/ObjectCache.cpp  2010-07-14 00:12:52 UTC 
(rev 37507)
+++ haiku/trunk/src/system/kernel/slab/ObjectCache.cpp  2010-07-14 00:48:45 UTC 
(rev 37508)
@@ -203,6 +203,16 @@
 
        ParanoiaChecker _(source);
 
+#if KDEBUG >= 1
+       uint8* objectsStart = (uint8*)source->pages + source->offset;
+       if (object < objectsStart
+               || object >= objectsStart + source->size * object_size
+               || ((uint8*)object - objectsStart) % object_size != 0) {
+               panic("object_cache: tried to free invalid object pointer");
+               return;
+       }
+#endif // KDEBUG
+
        object_link* link = object_to_link(object, object_size);
 
        TRACE_CACHE(this, "returning %p (%p) to %p, %lu used (%lu empty 
slabs).",


Other related posts:

  • » [haiku-commits] r37508 - haiku/trunk/src/system/kernel/slab - ingo_weinhold