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).",