[BOLT][NFC] Fix possible use-after-free
authorrevunov.denis@huawei.com <revunov.denis@huawei-partners.com>
Mon, 14 Nov 2022 13:25:20 +0000 (13:25 +0000)
committerrevunov.denis@huawei.com <revunov.denis@huawei-partners.com>
Mon, 14 Nov 2022 13:30:22 +0000 (13:30 +0000)
If NewName twine has reference to the old name, then after
Section.Name = NewName.str(); this reference is invalidated,
so we cannot use NewName.str() anymore.

Reviewed By: rafauler

Differential Revision: https://reviews.llvm.org/D137616

bolt/lib/Core/BinaryContext.cpp

index 6a01ab4..d09d8af 100644 (file)
@@ -2036,9 +2036,9 @@ void BinaryContext::renameSection(BinarySection &Section,
   deregisterSectionName(Section);
 
   Section.Name = NewName.str();
-  Section.setOutputName(NewName);
+  Section.setOutputName(Section.Name);
 
-  NameToSection.insert(std::make_pair(NewName.str(), &Section));
+  NameToSection.insert(std::make_pair(Section.Name, &Section));
 
   // Reinsert with the new name.
   Sections.insert(&Section);