Date: Fri, 12 Jan 2018 11:59:06 WET From: Johnny Eriksson <bygg@cafax.se> To: freebsd-bugs@freebsd.org Subject: elfdump Message-ID: <CMM.0.91.0.1515754746.bygg@mail.cafax.se>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CMM.0.91.0.1515754746.bygg>