When parsing a 64-bit big-endian elf file (on a 64-bit X86-64 system),
the sh_flags entry in the section header is mis-parsed since the routine
used only reads a 32-bit value.
*** elfdump.c Fri Jan 12 10:43:35 2018
--- elfdump.c.org Fri Jan 12 10:42:11 2018
***************
*** 798,804 ****
v = (char *)sh + i * shentsize;
name = elf_get_word(e, v, SH_NAME);
type = elf_get_word(e, v, SH_TYPE);
! flags = elf_get_size(e, v, SH_FLAGS);
addr = elf_get_addr(e, v, SH_ADDR);
offset = elf_get_off(e, v, SH_OFFSET);
size = elf_get_size(e, v, SH_SIZE);
--- 798,804 ----
v = (char *)sh + i * shentsize;
name = elf_get_word(e, v, SH_NAME);
type = elf_get_word(e, v, SH_TYPE);
! flags = elf_get_word(e, v, SH_FLAGS);
addr = elf_get_addr(e, v, SH_ADDR);
offset = elf_get_off(e, v, SH_OFFSET);
size = elf_get_size(e, v, SH_SIZE);
Possibly the (new) call to elf_get_size() should be changed to something
a little bit more informative.
--Johnny
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "[email protected]"