diff --git a/src/hb-ot-color-cbdt-table.hh b/src/hb-ot-color-cbdt-table.hh index 2500fbe3f..aaa1c37c6 100644 --- a/src/hb-ot-color-cbdt-table.hh +++ b/src/hb-ot-color-cbdt-table.hh @@ -455,7 +455,9 @@ struct IndexSubtableRecord unsigned int old_cbdt_prime_length = bitmap_size_context->cbdt_prime->length; // Set to invalid state to indicate filling glyphs is not yet started. - records->resize (records->length + 1); + if (unlikely (!records->resize (records->length + 1))) + return_trace (c->serializer->check_success (false)); + (*records)[records->length - 1].firstGlyphIndex = 1; (*records)[records->length - 1].lastGlyphIndex = 0; bitmap_size_context->size += IndexSubtableRecord::min_size; @@ -565,6 +567,8 @@ struct IndexSubtableArray hb_vector_t> lookup; build_lookup (c, bitmap_size_context, &lookup); + if (unlikely (lookup.in_error ())) + return c->serializer->check_success (false); bitmap_size_context->size = 0; bitmap_size_context->num_tables = 0; diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6241118484955136 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6241118484955136 new file mode 100644 index 000000000..6419459ea Binary files /dev/null and b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6241118484955136 differ