Enhance the sanity check for block sizes; check that the resulting pointer is

pointing to the range [first character, last character] instead of just not
after the last character. Patch by Yan Ivnitskiy!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133867 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Nick Lewycky 2011-06-25 17:08:50 +00:00
parent 644eb9befc
commit 3e64427cb3

View File

@ -375,10 +375,12 @@ public:
// Check that the block wasn't partially defined, and that the offset isn't
// bogus.
if (AtEndOfStream() || NextChar+NumWords*4 > BitStream->getLastChar())
const unsigned char *const SkipTo = NextChar + NumWords*4;
if (AtEndOfStream() || SkipTo > BitStream->getLastChar() ||
SkipTo < BitStream->getFirstChar())
return true;
NextChar += NumWords*4;
NextChar = SkipTo;
return false;
}