From 4fa1c6705a1bc5299adb5a848ceaf6ac8f33c0ba Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Thu, 19 Apr 2018 15:30:35 -0700 Subject: [PATCH] [subset] Check instruction offsets in glyph to ensure they are in bounds. --- src/hb-ot-glyf-table.hh | 18 ++++++++-- ...m-ccc61c92d589f895174cdef6ff2e3b20e9999a1a | Bin 0 -> 63302 bytes test/api/test-subset-glyf.c | 31 ++++++++++++++++++ 3 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 test/api/fonts/oom-ccc61c92d589f895174cdef6ff2e3b20e9999a1a diff --git a/src/hb-ot-glyf-table.hh b/src/hb-ot-glyf-table.hh index 3e8b5eb4a..85cb3a379 100644 --- a/src/hb-ot-glyf-table.hh +++ b/src/hb-ot-glyf-table.hh @@ -433,9 +433,23 @@ struct glyf else { unsigned int instruction_length_offset = start_offset + GlyphHeader::static_size + 2 * num_contours; + if (unlikely (instruction_length_offset + 2 > end_offset)) + { + DEBUG_MSG(SUBSET, nullptr, "Glyph size is too short, missing field instructionLength."); + return false; + } + const HBUINT16 &instruction_length = StructAtOffset (glyf_table, instruction_length_offset); - *instruction_start = instruction_length_offset + 2; - *instruction_end = *instruction_start + (uint16_t) instruction_length; + unsigned int start = instruction_length_offset + 2; + unsigned int end = start + (uint16_t) instruction_length; + if (unlikely (end > end_offset)) // Out of bounds of the current glyph + { + DEBUG_MSG(SUBSET, nullptr, "The instructions array overruns the glyph's boundaries."); + return false; + } + + *instruction_start = start; + *instruction_end = end; } return true; } diff --git a/test/api/fonts/oom-ccc61c92d589f895174cdef6ff2e3b20e9999a1a b/test/api/fonts/oom-ccc61c92d589f895174cdef6ff2e3b20e9999a1a new file mode 100644 index 0000000000000000000000000000000000000000..1af243ebcb7cfe23b21e47fc1732c84e4ddd541e GIT binary patch literal 63302 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