fix(relinker): zero the unmapped section-name table address
This commit is contained in:
parent
2a5eca11cd
commit
a6f42f5119
|
|
@ -80,7 +80,7 @@ void SectionHeaderTableBuilder::WriteTable(
|
|||
buf.resize(buf.size() + kShdrEntrySize * kSectionHeaderCount, 0);
|
||||
|
||||
_writeSectionHeader(buf, shOff + kShdrEntrySize * 0, 0, SHT_NULL, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
_writeSectionHeader(buf, shOff + kShdrEntrySize * 1, kShStrTabNameOffset, SHT_STRTAB, 0, shStrTabOff, shStrTabOff, shStrTabSize, 0, 0, kNoSpecialAlignment, 0);
|
||||
_writeSectionHeader(buf, shOff + kShdrEntrySize * 1, kShStrTabNameOffset, SHT_STRTAB, 0, 0, shStrTabOff, shStrTabSize, 0, 0, kNoSpecialAlignment, 0);
|
||||
_writeSectionHeader(buf, shOff + kShdrEntrySize * 2, kDynStrNameOffset, SHT_STRTAB, SHF_ALLOC, dynStrAddress, request.DynStrOffset, request.DynStrSize, 0, 0, kNoSpecialAlignment, 0);
|
||||
_writeSectionHeader(buf, shOff + kShdrEntrySize * 3, kDynSymNameOffset, SHT_DYNSYM, SHF_ALLOC, dynSymAddress, request.DynSymOffset, request.DynSymSize, kDynSymLinkToStrTab, kDynSymInfoFirstGlobal, kDynSymAlign, kSymEntrySize);
|
||||
_writeSectionHeader(buf, shOff + kShdrEntrySize * 4, kDynamicNameOffset, SHT_DYNAMIC, SHF_ALLOC | SHF_WRITE, dynamicAddress, request.DynamicSegmentOffset, request.DynamicSegmentSize, kDynamicLinkToStrTab, 0, kDynSymAlign, kDynEntrySize);
|
||||
|
|
|
|||
|
|
@ -21,6 +21,10 @@ int main() {
|
|||
const Elfpatcher::SectionHeaderTableRequest valid{128, 8, 136, 24, 160, 16, 176, 16};
|
||||
auto bytes = Fixture(); builder.WriteTable(bytes, valid);
|
||||
const auto table = Io::ReadU64(bytes, 40);
|
||||
Require(Io::ReadU64(bytes, table + 64 + 8) == 0);
|
||||
Require(Io::ReadU64(bytes, table + 64 + 16) == 0);
|
||||
Require(Io::ReadU64(bytes, table + 64 + 24) == 512);
|
||||
Require(Io::ReadU64(bytes, table + 64 + 32) != 0);
|
||||
Require(Io::ReadU64(bytes, table + 2 * 64 + 16) == 0x1000);
|
||||
auto empty = valid; empty.StubOffset = 384; empty.StubSize = 0;
|
||||
bytes = Fixture(); builder.WriteTable(bytes, empty);
|
||||
|
|
|
|||
Loading…
Reference in New Issue