Assert to bounds check MDNode::getOperand.
authorDavid Blaikie <dblaikie@gmail.com>
Fri, 8 Mar 2013 21:08:23 +0000 (21:08 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Fri, 8 Mar 2013 21:08:23 +0000 (21:08 +0000)
The getOperandPtr utility already bounds checks, but allows one-off-the-end.
This assert should catch the cases that could previously have been dereferencing
these one-off-the-end pointer. Happily, no cases of this came up with this
change.

llvm-svn: 176721

llvm/lib/IR/Metadata.cpp

index d751064..0228aeb 100644 (file)
@@ -303,6 +303,7 @@ void MDNode::deleteTemporary(MDNode *N) {
 
 /// getOperand - Return specified operand.
 Value *MDNode::getOperand(unsigned i) const {
+  assert(i < getNumOperands() && "Invalid operand number");
   return *getOperandPtr(const_cast<MDNode*>(this), i);
 }