From e2cc34e1908c26efddbfd497b707c712583f8243 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 26 Jul 2022 12:31:15 -0600 Subject: [PATCH] [subset/GPOS] Fix a fuzzer timeout test Fixes https://oss-fuzz.com/testcase-detail/5234369031176192 --- src/OT/Layout/GPOS/SinglePosFormat1.hh | 8 +++----- ...-minimized-hb-subset-fuzzer-5234369031176192 | Bin 0 -> 83705 bytes 2 files changed, 3 insertions(+), 5 deletions(-) create mode 100644 test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5234369031176192 diff --git a/src/OT/Layout/GPOS/SinglePosFormat1.hh b/src/OT/Layout/GPOS/SinglePosFormat1.hh index 0dacd1081..7cbdf6dc6 100644 --- a/src/OT/Layout/GPOS/SinglePosFormat1.hh +++ b/src/OT/Layout/GPOS/SinglePosFormat1.hh @@ -39,12 +39,10 @@ struct SinglePosFormat1 { if (!valueFormat.has_device ()) return; - auto it = - + hb_iter (this+coverage) - | hb_filter (c->glyph_set) - ; + hb_set_t intersection; + (this+coverage).intersect_set (*c->glyph_set, intersection); + if (!intersection) return; - if (!it) return; valueFormat.collect_variation_indices (c, this, values.as_array (valueFormat.get_len ())); } diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5234369031176192 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5234369031176192 new file mode 100644 index 0000000000000000000000000000000000000000..8cd77eacd837b523bac472bb9be4a11329bf8c8a GIT binary patch literal 83705 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 Jp9g5n-vNLvuw(!L literal 0 HcmV?d00001