From 3a00f497ebe6b6eb6d6e855a9e078f5122a8b136 Mon Sep 17 00:00:00 2001 From: Francis Visoiu Mistrih Date: Mon, 19 Nov 2018 17:19:50 +0000 Subject: [PATCH] [llvm-nm] Fix use-after-free for MachOUniversalBinaries MachOObjectFile::getHostArch() returns a temporary, and getArchName returns a StringRef pointing to a temporary std::string. No tests since it doesn't trigger any errors except with the sanitizers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@347230 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvm-nm/llvm-nm.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp index ad0afd4b0aa..88217a5403f 100644 --- a/tools/llvm-nm/llvm-nm.cpp +++ b/tools/llvm-nm/llvm-nm.cpp @@ -1889,7 +1889,8 @@ static void dumpSymbolNamesFromFile(std::string &Filename) { // No architecture flags were specified so if this contains a slice that // matches the host architecture dump only that. if (!ArchAll) { - StringRef HostArchName = MachOObjectFile::getHostArch().getArchName(); + Triple HostTriple = MachOObjectFile::getHostArch(); + StringRef HostArchName = HostTriple.getArchName(); for (MachOUniversalBinary::object_iterator I = UB->begin_objects(), E = UB->end_objects(); I != E; ++I) { -- 2.11.0