[llvm] r176721 - Assert to bounds check MDNode::getOperand.

David Blaikie dblaikie at gmail.com
Fri Mar 8 13:08:24 PST 2013


Author: dblaikie
Date: Fri Mar  8 15:08:23 2013
New Revision: 176721

URL: http://llvm.org/viewvc/llvm-project?rev=176721&view=rev
Log:
Assert to bounds check MDNode::getOperand.

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.

Modified:
    llvm/trunk/lib/IR/Metadata.cpp

Modified: llvm/trunk/lib/IR/Metadata.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Metadata.cpp?rev=176721&r1=176720&r2=176721&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Metadata.cpp (original)
+++ llvm/trunk/lib/IR/Metadata.cpp Fri Mar  8 15:08:23 2013
@@ -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);
 }
 





More information about the llvm-commits mailing list