summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2015-02-18 14:13:46 +0000
committerDaniel Jasper <djasper@google.com>2015-02-18 14:13:46 +0000
commitc0b7c80fe62881f41aa5f389fd13defd7e037cdd (patch)
treee8dc06a907a0ddf8edfcc9f960ddee107400ec68 /clang/lib/Serialization
parent6ca89920188c5deb1b9f31e9e85e947a817ac6b3 (diff)
downloadbcm5719-llvm-c0b7c80fe62881f41aa5f389fd13defd7e037cdd.tar.gz
bcm5719-llvm-c0b7c80fe62881f41aa5f389fd13defd7e037cdd.zip
Prevent use after free caused by accessing a member into a dense set.
The member gets invalidated as elements are added to the dense set. Directly access the underlying pointer instead. Not sure how to create a test case for this :-(. Maybe Richard can help. llvm-svn: 229673
Diffstat (limited to 'clang/lib/Serialization')
-rw-r--r--clang/lib/Serialization/ASTReader.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index a0cb7b506bd..3125b8e43e9 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -6628,7 +6628,8 @@ ASTReader::FindExternalVisibleDeclsByName(const DeclContext *DC,
auto Merged = MergedLookups.find(DC);
if (Merged != MergedLookups.end()) {
for (unsigned I = 0; I != Merged->second.size(); ++I) {
- LookUpInContexts(Merged->second[I]);
+ const DeclContext *Context = Merged->second[I];
+ LookUpInContexts(Context);
// We might have just added some more merged lookups. If so, our
// iterator is now invalid, so grab a fresh one before continuing.
Merged = MergedLookups.find(DC);
OpenPOWER on IntegriCloud