OSDN Git Service

[llvm-nm] Fix use-after-free for MachOUniversalBinaries
authorFrancis Visoiu Mistrih <francisvm@yahoo.com>
Mon, 19 Nov 2018 17:19:50 +0000 (17:19 +0000)
committerFrancis Visoiu Mistrih <francisvm@yahoo.com>
Mon, 19 Nov 2018 17:19:50 +0000 (17:19 +0000)
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

index ad0afd4..88217a5 100644 (file)
@@ -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) {