From 7dc896fccea25fd48d1bf44228ea4848ff8ebcfa Mon Sep 17 00:00:00 2001 From: Filipe Cabecinhas Date: Wed, 15 Apr 2015 08:48:08 +0000 Subject: Verify sizes when trying to read a VBR Also added an assert to ReadVBR64. llvm-svn: 234984 --- llvm/lib/Bitcode/Reader/BitstreamReader.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'llvm/lib/Bitcode/Reader/BitstreamReader.cpp') diff --git a/llvm/lib/Bitcode/Reader/BitstreamReader.cpp b/llvm/lib/Bitcode/Reader/BitstreamReader.cpp index beaaf7a7d667..6e3bea1e87bc 100644 --- a/llvm/lib/Bitcode/Reader/BitstreamReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitstreamReader.cpp @@ -62,6 +62,8 @@ static uint64_t readAbbreviatedField(BitstreamCursor &Cursor, case BitCodeAbbrevOp::Fixed: return Cursor.Read((unsigned)Op.getEncodingData()); case BitCodeAbbrevOp::VBR: + if ((unsigned)Op.getEncodingData() > 64) + report_fatal_error("Invalid record"); return Cursor.ReadVBR64((unsigned)Op.getEncodingData()); case BitCodeAbbrevOp::Char6: return BitCodeAbbrevOp::DecodeChar6(Cursor.Read(6)); -- cgit v1.2.3