From: Hamayama Date: Tue, 20 Jun 2017 08:56:20 +0000 (+0300) Subject: Fix null dereference in reclaim_block if DONT_ADD_BYTE_AT_END X-Git-Tag: v8.0.0~676 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=77bddd57f77c6dbdc30af4f8ae1315e8fe55054a;p=platform%2Fupstream%2Flibgc.git Fix null dereference in reclaim_block if DONT_ADD_BYTE_AT_END Issue #167 (bdwgc). * reclaim.c (GC_reclaim_block): If ok->ok_reclaim_list is null then do not update hhdr->hb_next (and *rlh). --- diff --git a/reclaim.c b/reclaim.c index 1b26e92..d307005 100644 --- a/reclaim.c +++ b/reclaim.c @@ -438,10 +438,13 @@ STATIC void GC_reclaim_block(struct hblk *hbp, word report_if_found) } } else if (GC_find_leak || !GC_block_nearly_full(hhdr)) { /* group of smaller objects, enqueue the real work */ - struct hblk **rlh = ok -> ok_reclaim_list + BYTES_TO_GRANULES(sz); + struct hblk **rlh = ok -> ok_reclaim_list; - hhdr -> hb_next = *rlh; - *rlh = hbp; + if (rlh != NULL) { + rlh += BYTES_TO_GRANULES(sz); + hhdr -> hb_next = *rlh; + *rlh = hbp; + } } /* else not worth salvaging. */ /* We used to do the nearly_full check later, but we */ /* already have the right cache context here. Also */