From 7fde6ab02560889c15f573f740b44b0463bcc45c Mon Sep 17 00:00:00 2001 From: Qunxin Liu Date: Fri, 5 Aug 2022 13:33:22 -0700 Subject: [PATCH] fuzzer fix: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49790 --- src/hb-ot-layout-common.hh | 39 +++++++++--------- src/hb-serialize.hh | 2 +- ...inimized-hb-subset-fuzzer-6362213417353216 | Bin 0 -> 131411 bytes 3 files changed, 20 insertions(+), 21 deletions(-) create mode 100644 test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6362213417353216 diff --git a/src/hb-ot-layout-common.hh b/src/hb-ot-layout-common.hh index c483db15c..146be513a 100644 --- a/src/hb-ot-layout-common.hh +++ b/src/hb-ot-layout-common.hh @@ -84,10 +84,10 @@ using OT::Layout::MediumTypes; namespace OT { template -static inline void ClassDef_serialize (hb_serialize_context_t *c, +static inline bool ClassDef_serialize (hb_serialize_context_t *c, Iterator it); -static void ClassDef_remap_and_serialize ( +static bool ClassDef_remap_and_serialize ( hb_serialize_context_t *c, const hb_set_t &klasses, bool use_class_zero, @@ -1380,17 +1380,14 @@ struct LookupOffsetList : List16OfOffsetTo */ -static void ClassDef_remap_and_serialize (hb_serialize_context_t *c, +static bool ClassDef_remap_and_serialize (hb_serialize_context_t *c, const hb_set_t &klasses, bool use_class_zero, hb_sorted_vector_t> &glyph_and_klass, /* IN/OUT */ hb_map_t *klass_map /*IN/OUT*/) { if (!klass_map) - { - ClassDef_serialize (c, glyph_and_klass.iter ()); - return; - } + return ClassDef_serialize (c, glyph_and_klass.iter ()); /* any glyph not assigned a class value falls into Class zero (0), * if any glyph assigned to class 0, remapping must start with 0->0*/ @@ -1413,7 +1410,7 @@ static void ClassDef_remap_and_serialize (hb_serialize_context_t *c, } c->propagate_error (glyph_and_klass, klasses); - ClassDef_serialize (c, glyph_and_klass.iter ()); + return ClassDef_serialize (c, glyph_and_klass.iter ()); } /* @@ -1495,11 +1492,12 @@ struct ClassDefFormat1_3 ? hb_len (hb_iter (glyph_map.keys()) | hb_filter (glyph_filter)) : glyph_map.get_population (); use_class_zero = use_class_zero && glyph_count <= glyph_and_klass.length; - ClassDef_remap_and_serialize (c->serializer, - orig_klasses, - use_class_zero, - glyph_and_klass, - klass_map); + if (!ClassDef_remap_and_serialize (c->serializer, + orig_klasses, + use_class_zero, + glyph_and_klass, + klass_map)) + return_trace (false); return_trace (keep_empty_table || (bool) glyph_and_klass); } @@ -1736,11 +1734,12 @@ struct ClassDefFormat2_4 ? hb_len (hb_iter (glyphset) | hb_filter (glyph_filter)) : glyph_map.get_population (); use_class_zero = use_class_zero && glyph_count <= glyph_and_klass.length; - ClassDef_remap_and_serialize (c->serializer, - orig_klasses, - use_class_zero, - glyph_and_klass, - klass_map); + if (!ClassDef_remap_and_serialize (c->serializer, + orig_klasses, + use_class_zero, + glyph_and_klass, + klass_map)) + return_trace (false); return_trace (keep_empty_table || (bool) glyph_and_klass); } @@ -2124,9 +2123,9 @@ struct ClassDef }; template -static inline void ClassDef_serialize (hb_serialize_context_t *c, +static inline bool ClassDef_serialize (hb_serialize_context_t *c, Iterator it) -{ c->start_embed ()->serialize (c, it); } +{ return (c->start_embed ()->serialize (c, it)); } /* diff --git a/src/hb-serialize.hh b/src/hb-serialize.hh index cecdcdeb7..9edb74e6b 100644 --- a/src/hb-serialize.hh +++ b/src/hb-serialize.hh @@ -315,7 +315,7 @@ struct hb_serialize_context_t { object_t *obj = current; if (unlikely (!obj)) return; - if (unlikely (in_error())) return; + if (unlikely (in_error() && !only_overflow ())) return; current = current->next; revert (obj->head, obj->tail); diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6362213417353216 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6362213417353216 new file mode 100644 index 0000000000000000000000000000000000000000..c5bd724d2401db485bda7336c4d5421767936e2f GIT binary patch literal 131411 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 Lf;r;PGDrLmEpmq+ literal 0 HcmV?d00001