From 0e845d973e2bf15b56cf68af9db778d1258b7709 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Mon, 19 Apr 2021 16:09:37 -0700 Subject: [PATCH] [subset] fix memory leak in repacker caused by failed alloc. Fixes: https://oss-fuzz.com/testcase-detail/5616763250278400. --- src/hb-repacker.hh | 4 +++- ...-minimized-hb-subset-fuzzer-5616763250278400 | Bin 0 -> 97363 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5616763250278400 diff --git a/src/hb-repacker.hh b/src/hb-repacker.hh index 2cfff9b29..3accabb11 100644 --- a/src/hb-repacker.hh +++ b/src/hb-repacker.hh @@ -343,7 +343,9 @@ struct graph_t auto* clone = vertices_.push (); auto& child = vertices_[child_idx]; clone_buffer_t* buffer = clone_buffers_.push (); - if (!check_success (buffer->copy (child.obj))) { + if (vertices_.in_error () + || clone_buffers_.in_error () + || !check_success (buffer->copy (child.obj))) { return; } diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5616763250278400 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5616763250278400 new file mode 100644 index 0000000000000000000000000000000000000000..d58d3f6cb6d92e9012638eacf4fc89c97dc8b51f GIT binary patch literal 97363 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 literal 0 HcmV?d00001