diff --git a/src/font.cc b/src/font.cc index 6b72f6d..a45153e 100644 --- a/src/font.cc +++ b/src/font.cc @@ -123,6 +123,9 @@ bool ReadCollectionFont(Buffer* file, const uint8_t* data, size_t len, (*all_tables)[table.offset] = font->FindTable(table.tag); } else { table.reuse_of = (*all_tables)[table.offset]; + if (table.tag != table.reuse_of->tag) { + return FONT_COMPRESSION_FAILURE(); + } } } diff --git a/src/normalize.cc b/src/normalize.cc index 39f9405..6685e08 100644 --- a/src/normalize.cc +++ b/src/normalize.cc @@ -96,7 +96,10 @@ bool MakeEditableBuffer(Font* font, int tableTag) { int sz = Round4(table->length); table->buffer.resize(sz); uint8_t* buf = &table->buffer[0]; - memcpy(buf, table->data, sz); + memcpy(buf, table->data, table->length); + if (PREDICT_FALSE(sz > table->length)) { + memset(buf + table->length, 0, sz - table->length); + } table->data = buf; return true; }