diff --git a/src/hb-serialize.hh b/src/hb-serialize.hh index b352750b6..537fc8c82 100644 --- a/src/hb-serialize.hh +++ b/src/hb-serialize.hh @@ -519,8 +519,9 @@ struct hb_serialize_context_t assert (this->start <= (char *) obj); assert ((char *) obj <= this->head); - assert ((char *) obj + size >= this->head); - if (unlikely (!this->allocate_size (((char *) obj) + size - this->head))) return nullptr; + assert (this->head - (char *) obj <= size); + if (unlikely (((char *) obj + size < (char *) obj) || + !this->allocate_size (((char *) obj) + size - this->head))) return nullptr; return reinterpret_cast (obj); } template diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5072358514753536 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5072358514753536 new file mode 100644 index 000000000..d3cf859be Binary files /dev/null and b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5072358514753536 differ