From f43ad222715f58ea62a004b54e4b6a31e589e762 Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Thu, 25 Jun 2015 06:53:21 +0200 Subject: [PATCH] Reject UIntBase128 with leading zeros Fixes #23. --- src/variable_length.cc | 4 ++++ 1 file changed, 4 insertions(+) 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();