Skip site navigation (1)Skip section navigation (2)
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>