Patch by Lucian Adrian Grijincu (slightly modified by myself):

ObjectCache::ReturnObjectToSlab(): Check the returned object pointer for
obvious invalidity (out of bounds or misalignment).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37508 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold 2010-07-14 00:48:45 +00:00
parent 87c30de789
commit 737b989128
1 changed files with 10 additions and 0 deletions

View File

@ -203,6 +203,16 @@ ObjectCache::ReturnObjectToSlab(slab* source, void* object, uint32 flags)
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).",