summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2015-06-18 20:29:41 +0000
committerRui Ueyama <ruiu@google.com>2015-06-18 20:29:41 +0000
commit223fe1b9e71245c7f481d08a76f781a51a2ed831 (patch)
tree21e54fdb9e6b0dd785fb91a2da45e8b74e93e26c
parentb95188cb2c820ca6e124ec993b62176355d6f2af (diff)
downloadbcm5719-llvm-223fe1b9e71245c7f481d08a76f781a51a2ed831.tar.gz
bcm5719-llvm-223fe1b9e71245c7f481d08a76f781a51a2ed831.zip
COFF: Fix unsafe memory access.
llvm-svn: 240046
-rw-r--r--lld/COFF/InputFiles.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/lld/COFF/InputFiles.cpp b/lld/COFF/InputFiles.cpp
index 6d084bb2473..1d4db89653e 100644
--- a/lld/COFF/InputFiles.cpp
+++ b/lld/COFF/InputFiles.cpp
@@ -256,12 +256,13 @@ std::error_code BitcodeFile::parse() {
return make_error_code(LLDError::BrokenFile);
}
+ llvm::BumpPtrStringSaver Saver(Alloc);
for (unsigned I = 0, E = M->getSymbolCount(); I != E; ++I) {
lto_symbol_attributes Attrs = M->getSymbolAttributes(I);
if ((Attrs & LTO_SYMBOL_SCOPE_MASK) == LTO_SYMBOL_SCOPE_INTERNAL)
continue;
- StringRef SymName = M->getSymbolName(I);
+ StringRef SymName = Saver.save(M->getSymbolName(I));
int SymbolDef = Attrs & LTO_SYMBOL_DEFINITION_MASK;
if (SymbolDef == LTO_SYMBOL_DEFINITION_UNDEFINED) {
SymbolBodies.push_back(new (Alloc) Undefined(SymName));
OpenPOWER on IntegriCloud