Closed luk32 closed 9 years ago
Since readelf on this file outputs:
0 Symbol table '.dynsym' contains 12 entries:
0 Num: Value Size Type Bind Vis Ndx Name
0 0: 00000000 0 NOTYPE LOCAL DEFAULT UND <corrupt>
0 1: 00108000 0 SECTION LOCAL DEFAULT 1 <corrupt>
0 2: 00175170 0 SECTION LOCAL DEFAULT 5 <corrupt>
0 3: 0017b608 0 NOTYPE GLOBAL DEFAULT 8 <corrupt>
0 4: 0017adb8 0 NOTYPE GLOBAL DEFAULT 7 <corrupt>
0 5: 001bfeac 0 NOTYPE GLOBAL DEFAULT 10 <corrupt>
0 6: 0017b608 0 NOTYPE GLOBAL DEFAULT 7 <corrupt>
I will follow the same way and mark those names as corrupted.
When loading a ELF file during
ReadSections()
,FindStringTables()
setsdynamicStringTable
tonull
. Then during the loop performingTouchSection
,GetSectionFromSectionHeader()
there is a case whereheader.Type
isSectionType.DynamicSymbolTable
.The null
dynamicStringTable
is passed tonew SymbolTable<T>(header, readerSource, dynamicStringTable, this)
and then duringReadSymbols()
tries to access it astable
on linevar name = table[nameIdx];
. This blows up.This happens during
TouchSection
fori == 9
in the linked ELF.