Add bounds checking assertions to APValue, NFC
authorReid Kleckner <rnk@google.com>
Tue, 19 Jan 2021 19:03:18 +0000 (11:03 -0800)
committerReid Kleckner <rnk@google.com>
Tue, 19 Jan 2021 19:15:02 +0000 (11:15 -0800)
These checks help find llvm.org/pr48582 without ASan

clang/include/clang/AST/APValue.h

index f9b1899..5f4ac02 100644 (file)
@@ -537,10 +537,12 @@ public:
   }
   APValue &getStructBase(unsigned i) {
     assert(isStruct() && "Invalid accessor");
+    assert(i < getStructNumBases() && "base class index OOB");
     return ((StructData *)(char *)&Data)->Elts[i];
   }
   APValue &getStructField(unsigned i) {
     assert(isStruct() && "Invalid accessor");
+    assert(i < getStructNumFields() && "field index OOB");
     return ((StructData *)(char *)&Data)->Elts[getStructNumBases() + i];
   }
   const APValue &getStructBase(unsigned i) const {