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:
parent
87c30de789
commit
737b989128
|
@ -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).",
|
||||
|
|
Loading…
Reference in New Issue