From: Jose E. Marchesi Date: Tue, 20 Oct 2015 14:22:08 +0000 (+0200) Subject: libelf: use the right size when preading in[0].sh_size X-Git-Tag: elfutils-0.165~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1ed7195ea8f6ccb47c2e5b911fbc4105f18a5d2e;p=thirdparty%2Felfutils.git libelf: use the right size when preading in[0].sh_size Signed-off-by: Jose E. Marchesi --- diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 8beecd4b5..ef74b5bf5 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,8 @@ +2015-10-20 Jose E. Marchesi + + * elf_begin.c (get_shnum): Elf64_Shdr.sh_size is an Elf64_Xword. + Fix the size argument to pread_retry. + 2015-10-13 Chih-Hung Hsieh * elf32_updatefile.c (__elfw2(LIBELFBITS,updatemmap)): Move nested diff --git a/libelf/elf_begin.c b/libelf/elf_begin.c index f26119c2f..d2920c4ee 100644 --- a/libelf/elf_begin.c +++ b/libelf/elf_begin.c @@ -216,7 +216,7 @@ get_shnum (void *map_address, unsigned char *e_ident, int fildes, off_t offset, + offset))->sh_size, sizeof (Elf64_Xword)); else - if (unlikely (pread_retry (fildes, &size, sizeof (Elf64_Word), + if (unlikely (pread_retry (fildes, &size, sizeof (Elf64_Xword), offset + ehdr.e64->e_shoff + offsetof (Elf64_Shdr, sh_size)) != sizeof (Elf64_Xword)))