diff --git a/src/variable_length.cc b/src/variable_length.cc index 9a85623..108d4bc 100644 --- a/src/variable_length.cc +++ b/src/variable_length.cc @@ -98,6 +98,10 @@ bool ReadBase128(Buffer* buf, uint32_t* value) { if (!buf->ReadU8(&code)) { return FONT_COMPRESSION_FAILURE(); } + // Leading zeros are invalid. + if (i == 0 && code == 0x80) { + return FONT_COMPRESSION_FAILURE(); + } // If any of the top seven bits are set then we're about to overflow. if (result & 0xfe000000) { return FONT_COMPRESSION_FAILURE();