From d964c865715676d4a1f2ee0d06225b9d0ed2387e Mon Sep 17 00:00:00 2001 From: Mehdi Amini Date: Wed, 9 Nov 2016 21:26:49 +0000 Subject: [PATCH] Make BitcodeReader::parseIdentificationBlock() robust to EOF This method is particular: it iterates at the top-level and does not have an enclosing block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286394 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Bitcode/Reader/BitcodeReader.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp index 57b03e80fa6..23876ffcb99 100644 --- a/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/lib/Bitcode/Reader/BitcodeReader.cpp @@ -4347,6 +4347,12 @@ Expected BitcodeReader::parseIdentificationBlock() { // We expect a number of well-defined blocks, though we don't necessarily // need to understand them all. while (true) { + // This loop iterates at the top-level: since there is no enclosing block + // we need to make sure we aren't at the end of the stream before calling + // advance, otherwise we'll get an error. + if (Stream.AtEndOfStream()) + return Error::success(); + BitstreamEntry Entry = Stream.advance(); switch (Entry.Kind) { case BitstreamEntry::Error: -- 2.50.1