Fix a latent UAF bug in profwriter
authorXinliang David Li <davidxl@google.com>
Sun, 20 Dec 2015 08:46:18 +0000 (08:46 +0000)
committerXinliang David Li <davidxl@google.com>
Sun, 20 Dec 2015 08:46:18 +0000 (08:46 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@256116 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ProfileData/InstrProfWriter.cpp

index 1e18c268892c0dcc3b2af2836db07ae47d281171..9bb03e1e77a38deda428e062385d465410028011 100644 (file)
@@ -108,6 +108,8 @@ std::error_code InstrProfWriter::addRecord(InstrProfRecord &&I,
   if (NewFunc) {
     // We've never seen a function with this name and hash, add it.
     Dest = std::move(I);
+    // Fix up the name to avoid dangling reference.
+    Dest.Name = FunctionData.find(Dest.Name)->getKey();
     Result = instrprof_error::success;
     if (Weight > 1) {
       for (auto &Count : Dest.Counts) {