diff --git a/src/hb-subset.cc b/src/hb-subset.cc index 353a3a5cf..186b12dbb 100644 --- a/src/hb-subset.cc +++ b/src/hb-subset.cc @@ -590,10 +590,15 @@ hb_subset_plan_execute_or_fail (hb_subset_plan_t *plan) while (!pending_subset_tags.is_empty ()) { + if (subsetted_tags.in_error () + || pending_subset_tags.in_error ()) { + success = false; + goto end; + } + bool made_changes = false; for (hb_tag_t tag : pending_subset_tags) { - if (!_dependencies_satisfied (plan, tag, subsetted_tags, pending_subset_tags)) diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6164014466203648 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6164014466203648 new file mode 100644 index 000000000..3a15ab230 Binary files /dev/null and b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6164014466203648 differ