From 4ba8e3c6fd34cf0ab5f97e607bac708a978fa9b3 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Wed, 29 Jul 2020 12:33:42 -0700 Subject: [PATCH] [ENOMEM] Fix failure to check calloc return. Fixes https://oss-fuzz.com/testcase-detail/6246465148813312. --- src/hb-ot-name-table.hh | 2 ++ ...-minimized-hb-subset-fuzzer-6246465148813312 | Bin 0 -> 24246 bytes 2 files changed, 2 insertions(+) create mode 100644 test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6246465148813312 diff --git a/src/hb-ot-name-table.hh b/src/hb-ot-name-table.hh index b46976d46..ece3c2846 100644 --- a/src/hb-ot-name-table.hh +++ b/src/hb-ot-name-table.hh @@ -215,6 +215,8 @@ struct name this->count = it.len (); NameRecord *name_records = (NameRecord *) calloc (it.len (), NameRecord::static_size); + if (unlikely (!name_records)) return_trace (false); + hb_array_t records (name_records, it.len ()); for (const NameRecord& record : it) diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6246465148813312 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6246465148813312 new file mode 100644 index 0000000000000000000000000000000000000000..750700fcf1676cf93b70f928ce934ed6ed42db92 GIT binary patch literal 24246 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 NSo9C?@c+*{{BMu*gAV`z literal 0 HcmV?d00001