]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Keep shadow copies of the `e_shnum', `e_phnum' and `e_shstrndx'
authorjkoshy <jkoshy@FreeBSD.org>
Mon, 25 Dec 2006 02:22:22 +0000 (02:22 +0000)
committerjkoshy <jkoshy@FreeBSD.org>
Mon, 25 Dec 2006 02:22:22 +0000 (02:22 +0000)
commit26d8253ac6532abcb8d1c8d57743998f5368173b
tree1f1c4db9c6b866adf56e5cc3eccd23baaa57af28
parent44313eba34c379a180dc73dcd02ab9c415941db3
Keep shadow copies of the `e_shnum', `e_phnum' and `e_shstrndx'
members of the ELF Executable Header inside the library-private
`struct _Elf' descriptor and only update the underlying Elf{32,64}_Ehdr
structure on an elf_update(3) call.  These fields of the Ehdr
structure are technically `out of bounds' for an application program
per the ELF(3) API, but we've seen applications that initialize
a new Ehdr structure using memcpy(), messing up the library's
invariants. [1]

Implement elf_getphnum() and handle ELF objects with more than
64K program header table entries.

Reported by: jb [1]
13 files changed:
lib/libelf/Makefile
lib/libelf/Version.map
lib/libelf/_libelf.h
lib/libelf/elf_getphnum.3 [new file with mode: 0644]
lib/libelf/elf_phnum.c [new file with mode: 0644]
lib/libelf/elf_scn.c
lib/libelf/elf_shnum.c
lib/libelf/elf_shstrndx.c
lib/libelf/elf_update.c
lib/libelf/libelf_checksum.c
lib/libelf/libelf_ehdr.c
lib/libelf/libelf_extended.c [new file with mode: 0644]
lib/libelf/libelf_phdr.c