]> 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, 24 Feb 2016 07:32:39 +0000 (10:32 +0300)
commit57f36b93c1f1f2beb6bbbf0cb38c714b518abfdd
treeaed810607c7a7a60e8dea7dc1686ee8bccec99dd
parent10e1b61622ae7d65256e8dd667d6d0867bc7cac6
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