From c4573c2ec793dc9a124654f0d0d349df7787fa45 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Tue, 14 Dec 2021 14:49:15 -0800 Subject: [PATCH] [repacker] don't infinite loop if visited or roots is in error. Fixes https://oss-fuzz.com/testcase-detail/5205038086094848 --- src/hb-repacker.hh | 7 +++++++ ...minimized-hb-subset-fuzzer-5205038086094848 | Bin 0 -> 129192 bytes 2 files changed, 7 insertions(+) create mode 100644 test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5205038086094848 diff --git a/src/hb-repacker.hh b/src/hb-repacker.hh index 5c46b4ccc..384d084a3 100644 --- a/src/hb-repacker.hh +++ b/src/hb-repacker.hh @@ -402,11 +402,15 @@ struct graph_t while (roots) { unsigned next = HB_SET_VALUE_INVALID; + if (unlikely (!check_success (!roots.in_error ()))) break; if (!roots.next (&next)) break; hb_set_t connected_roots; find_connected_nodes (next, roots, visited, connected_roots); + if (unlikely (!check_success (!connected_roots.in_error ()))) break; + isolate_subgraph (connected_roots); + if (unlikely (!check_success (!connected_roots.in_error ()))) break; unsigned next_space = this->next_space (); num_roots_for_space_.push (0); @@ -423,6 +427,8 @@ struct graph_t // into the 32 bit space as needed, instead of using isolation. } + + return true; } @@ -1074,6 +1080,7 @@ struct graph_t hb_set_t& visited, hb_set_t& connected) { + if (unlikely (!check_success (!visited.in_error ()))) return; if (visited.has (start_idx)) return; visited.add (start_idx); diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5205038086094848 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5205038086094848 new file mode 100644 index 0000000000000000000000000000000000000000..db845043f4e0cba60162947c4de5be6d30d7d321 GIT binary patch literal 129192 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