Make sure we don't resize(0) when we get a fwdref with Idx == UINT_MAX

Make it an error instead.

Bug found with AFL fuzz.

llvm-svn: 236190
This commit is contained in:
Filipe Cabecinhas
2015-04-30 00:52:42 +00:00
parent 34948e5e22
commit bad0779f63
3 changed files with 9 additions and 0 deletions

View File

@@ -790,6 +790,10 @@ Constant *BitcodeReaderValueList::getConstantFwdRef(unsigned Idx,
}
Value *BitcodeReaderValueList::getValueFwdRef(unsigned Idx, Type *Ty) {
// Bail out for a clearly invalid value. This would make us call resize(0)
if (Idx == UINT_MAX)
return nullptr;
if (Idx >= size())
resize(Idx + 1);