tools: fix heap-buffer-overrun detected via ASAN
authorSaleem Abdulrasool <compnerd@compnerd.org>
Mon, 14 Apr 2014 16:38:25 +0000 (16:38 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Mon, 14 Apr 2014 16:38:25 +0000 (16:38 +0000)
Once the auxiliary fields relating to the filename have been inspected, any
following auxiliary fields need not be visited as they have been consumed (the
following fields comprise the filepath as a single unit).

Adjust the test to catch this even if ASAN is not enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206190 91177308-0d34-0410-b5e6-96231b3b80d8

test/tools/llvm-objdump/coff-file.test
tools/llvm-objdump/llvm-objdump.cpp

index ba345b4d42602a77e29b7704cb8c2ef853155342..75d02b8a49509499bf73e12533ffa7a5ebcf5c34 100644 (file)
@@ -2,4 +2,5 @@ RUN: llvm-objdump -t %p/Inputs/file.obj.coff-arm | FileCheck %s
 
 CHECK: .file
 CHECK-NEXT: AUX /Users/compnerd/work/llvm/test/tools/llvm-readobj/Inputs/file.asm
+CHECK-NEXT: [{{[ 0-9]+}}]
 
index aff83f0cbd1665673a1064d9f870a591093bba6d..42c61c6386d7944944e84523381ce419fe4ba480 100644 (file)
@@ -708,6 +708,9 @@ static void PrintCOFFSymbolTable(const COFFObjectFile *coff) {
         StringRef Name(AF->FileName,
                        Symbol->NumberOfAuxSymbols * COFF::SymbolSize);
         outs() << "AUX " << Name.rtrim(StringRef("\0", 1))  << '\n';
+
+        SI = SI + Symbol->NumberOfAuxSymbols;
+        break;
       } else {
         outs() << "AUX Unknown\n";
       }