[lld] r245884 - Diagnose symbols with invalid section indexes.

Rafael Espindola via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 24 15:00:25 PDT 2015


Author: rafael
Date: Mon Aug 24 17:00:25 2015
New Revision: 245884

URL: http://llvm.org/viewvc/llvm-project?rev=245884&view=rev
Log:
Diagnose symbols with invalid section indexes.

Added:
    lld/trunk/test/elf2/Inputs/invalid-section-index.elf
Modified:
    lld/trunk/ELF/InputFiles.cpp
    lld/trunk/test/elf2/invalid-elf.test

Modified: lld/trunk/ELF/InputFiles.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputFiles.cpp?rev=245884&r1=245883&r2=245884&view=diff
==============================================================================
--- lld/trunk/ELF/InputFiles.cpp (original)
+++ lld/trunk/ELF/InputFiles.cpp Mon Aug 24 17:00:25 2015
@@ -93,6 +93,10 @@ SymbolBody *elf2::ObjectFile<ELFT>::crea
   if (SecIndex == SHN_XINDEX)
     SecIndex = ELFObj->getExtendedSymbolTableIndex(Sym, Symtab, SymtabSHNDX);
 
+  if (SecIndex >= Chunks.size() ||
+      (SecIndex != 0 && !Chunks[SecIndex]))
+    error("Invalid section index");
+
   switch (Sym->getBinding()) {
   default:
     error("unexpected binding");

Added: lld/trunk/test/elf2/Inputs/invalid-section-index.elf
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf2/Inputs/invalid-section-index.elf?rev=245884&view=auto
==============================================================================
Binary files lld/trunk/test/elf2/Inputs/invalid-section-index.elf (added) and lld/trunk/test/elf2/Inputs/invalid-section-index.elf Mon Aug 24 17:00:25 2015 differ

Modified: lld/trunk/test/elf2/invalid-elf.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf2/invalid-elf.test?rev=245884&r1=245883&r2=245884&view=diff
==============================================================================
--- lld/trunk/test/elf2/invalid-elf.test (original)
+++ lld/trunk/test/elf2/invalid-elf.test Mon Aug 24 17:00:25 2015
@@ -13,3 +13,7 @@ INVALID-SYMTAB-SHINFO: Invalid sh_info i
 RUN: not lld -flavor gnu2 %p/Inputs/invalid-binding.elf -o %t2 2>&1 | \
 RUN:   FileCheck --check-prefix=INVALID-BINDING %s
 INVALID-BINDING: unexpected binding
+
+RUN: not lld -flavor gnu2 %p/Inputs/invalid-section-index.elf -o %t2 2>&1 | \
+RUN:   FileCheck --check-prefix=INVALID-SECTION-INDEX %s
+INVALID-SECTION-INDEX: Invalid section index




More information about the llvm-commits mailing list