Check for failed subset input creation in the fuzzer.
diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-4801020053291008 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-4801020053291008
new file mode 100644
index 0000000..5758a65
--- /dev/null
+++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-4801020053291008
Binary files differ
diff --git a/test/fuzzing/hb-subset-fuzzer.cc b/test/fuzzing/hb-subset-fuzzer.cc
index caeafb1..93153ed 100644
--- a/test/fuzzing/hb-subset-fuzzer.cc
+++ b/test/fuzzing/hb-subset-fuzzer.cc
@@ -64,12 +64,24 @@
};
hb_subset_input_t *input = hb_subset_input_create_or_fail ();
+ if (!input)
+ {
+ hb_face_destroy (face);
+ hb_blob_destroy (blob);
+ return 0;
+ }
trySubset (face, text, sizeof (text) / sizeof (hb_codepoint_t), flags, input);
unsigned num_axes;
hb_codepoint_t text_from_data[16];
if (size > sizeof (text_from_data) + sizeof (flags) + sizeof(num_axes)) {
hb_subset_input_t *input = hb_subset_input_create_or_fail ();
+ if (!input)
+ {
+ hb_face_destroy (face);
+ hb_blob_destroy (blob);
+ return 0;
+ }
size -= sizeof (text_from_data);
memcpy (text_from_data,
data + size,