]> granicus.if.org Git - gc/commit
Skip GC_DS_PER_OBJECT objects with negative descriptor in GC_mark_from
authorNiklas Therning <niklas@therning.org>
Wed, 17 Feb 2016 13:16:01 +0000 (14:16 +0100)
committerIvan Maidanski <ivmai@mail.ru>
Wed, 16 Mar 2016 20:48:55 +0000 (23:48 +0300)
commit66f78e602c6d79a9c8fff3eb3f405302ac4e573f
treee0f25267441d6d14cee2d58e9a528aaeb68183d7
parent295554687f223311e29baa72cbc94f6e0949e9b9
Skip GC_DS_PER_OBJECT objects with negative descriptor in GC_mark_from

Added a check in GC_mark_from() for GC_DS_PER_OBJECT objects with
negative descriptors to prevent mistaking the free list pointers in
free objects for being type descriptor pointers.  If the specified
descriptor offset was larger than the object size this could lead to
arbitrary data from allocated objects being misinterpreted as
descriptors and the process crashing.

* mark.c (GC_mark_from): In case of GC_DS_PER_OBJECT, skip objects
those descriptor is outside object.
mark.c