def test_remove_nobits(self): for file_name in [ "data/null_elf", "data/arm_exec", "data/arm_exec_nosect", "data/arm_object", "data/mips64_exec", "data/mips32_exec", "data/ia32_exec", "data/amd64_exec", "data/ia64_exec", ]: ef = PreparedElfFile(filename=file_name) if ef.segments: seg_sizes = [] for segment in ef.segments: seg_sizes.append((segment.get_memsz(), segment.get_filesz())) ef.remove_nobits() count = 0 for segment in ef.segments: self.assertEqual(segment.get_memsz(), segment.get_filesz()) self.assertEqual(segment.get_memsz(), seg_sizes[count][0]) count += 1 ef = UnpreparedElfFile() sec = UnpreparedElfSection(section_type=SHT_NOBITS, data=10) self.assertEqual(sec.get_size(), 10) ef.add_section(sec) ef.remove_nobits() sec = ef.sections[1] self.assertEqual(sec.type, SHT_PROGBITS) self.assertEqual(sec.get_size(), 10) self.assertEqual(sec.get_file_data(), ByteArray("\0" * 10))
def test_remove_nobits(self): for file_name in ["data/null_elf", "data/arm_exec", "data/arm_stripped_exec", "data/arm_exec_nosect", "data/arm_object", "data/mips64_exec", "data/mips32_exec", "data/ia32_exec", "data/amd64_exec", "data/ia64_exec", ]: ef = PreparedElfFile(filename=file_name) if ef.segments: seg_sizes = [] for segment in ef.segments: seg_sizes.append((segment.get_memsz(), segment.get_filesz())) ef.remove_nobits() for segment, seg_size in zip(ef.segments, seg_sizes): self.assertEqual(segment.get_memsz(), segment.get_filesz()) self.assertEqual(segment.get_memsz(), seg_size[0]) ef = UnpreparedElfFile() sec = UnpreparedElfSection(None, section_type=SHT_NOBITS, data=10) self.assertEqual(sec.get_size(), 10) ef.add_section(sec) ef.remove_nobits() sec = ef.sections[1] self.assertEqual(sec.type, SHT_PROGBITS) self.assertEqual(sec.get_size(), 10) self.assertEqual(sec.get_file_data(), ByteArray('\0' * 10))
def test_get_size(self): sect = UnpreparedElfSection("test") self.assertEqual(sect.get_size(), 0) sect = UnpreparedElfSection("test", data=ByteArray("pants")) self.assertEqual(sect.get_size(), 5) sect = UnpreparedElfSection("test", SHT_NOBITS) sect.set_size(40) self.assertEqual(sect.get_size(), 40)
def test_get_size(self): sect = UnpreparedElfSection("test") self.assertEqual(sect.get_size(), 0) sect = UnpreparedElfSection("test", data=ByteArray("pants")) self.assertEqual(sect.get_size(), 5) sect = UnpreparedElfSection("test", SHT_NOBITS) sect.set_size(40) self.assertEqual(sect.get_size(), 40)
def test_set_size(self): sect = UnpreparedElfSection("test") sect.set_size(37) self.assertEqual(sect.get_size(), 37) sect = UnpreparedElfSection("test", SHT_NOBITS) sect.set_size(37) self.assertEqual(sect.get_size(), 37) sect = UnpreparedElfSection("test", data=ByteArray("pants")) sect.set_size(3) self.assertEqual(sect.get_size(), 3) sect = UnpreparedElfSection("test", data=ByteArray("pants")) sect.set_size(10) self.assertEqual(sect.get_size(), 10) sect = UnpreparedElfSection("test", data=ByteArray("pants")) sect = sect.prepare(0, 0, 0, 32, "<") sect.set_size(4) self.assertEqual(sect.get_size(), 4) sect = UnpreparedElfSection("test", data=ByteArray("pants")) sect = sect.prepare(0, 0, 0, 32, "<") self.assertRaises(InvalidArgument, sect.set_size, 14) sect = UnpreparedElfSection("test", SHT_NOBITS) sect.set_size(37) sect = sect.prepare(0, 0, 0, 32, "<") self.assertRaises(InvalidArgument, sect.set_size, 69) sect = UnpreparedElfSection("test", SHT_NOBITS) sect.set_size(37) sect = sect.prepare(0, 0, 0, 32, "<") sect.set_size(12) self.assertEqual(sect.get_size(), 12)
def test_set_size(self): sect = UnpreparedElfSection("test") sect.set_size(37) self.assertEqual(sect.get_size(), 37) sect = UnpreparedElfSection("test", SHT_NOBITS) sect.set_size(37) self.assertEqual(sect.get_size(), 37) sect = UnpreparedElfSection("test", data=ByteArray("pants")) sect.set_size(3) self.assertEqual(sect.get_size(), 3) sect = UnpreparedElfSection("test", data=ByteArray("pants")) sect.set_size(10) self.assertEqual(sect.get_size(), 10) sect = UnpreparedElfSection("test", data=ByteArray("pants")) sect = sect.prepare(0, 0, 0, 32, '<') sect.set_size(4) self.assertEqual(sect.get_size(), 4) sect = UnpreparedElfSection("test", data=ByteArray("pants")) sect = sect.prepare(0, 0, 0, 32, '<') self.assertRaises(InvalidArgument, sect.set_size, 14) sect = UnpreparedElfSection("test", SHT_NOBITS) sect.set_size(37) sect = sect.prepare(0, 0, 0, 32, '<') self.assertRaises(InvalidArgument, sect.set_size, 69) sect = UnpreparedElfSection("test", SHT_NOBITS) sect.set_size(37) sect = sect.prepare(0, 0, 0, 32, '<') sect.set_size(12) self.assertEqual(sect.get_size(), 12)