From: Petr Stetiar Date: Mon, 27 Aug 2007 10:15:07 +0000 (+0200) Subject: kbuild: fix segfault in modpost X-Git-Tag: Ubuntu-5.0.0-8.9~38744^2~34 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=a83710e584b8ef46fc44472ec6f0c342003416e8;p=mirror_ubuntu-disco-kernel.git kbuild: fix segfault in modpost Fix modpost segfault. Before: ------- ynezz@ntbk:~/linux-2.6.git$ scripts/mod/modpost vmlinux ath_pci.o Segmentation fault After: ------ ynezz@ntbk:~/linux-2.6.git$ scripts/mod/modpost vmlinux ath_pci.o FATAL: section header offset=815726848 in file 'ath_pci.o' is bigger then filesize=153968 Sam: This seems to warn for a binutils issue. Anyway modpost should not segfault. Signed-off-by: Petr Stetiar Signed-off-by: Sam Ravnborg --- diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 0a4051fbd34e..2ef9a193fcae 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -381,6 +381,12 @@ static int parse_elf(struct elf_info *info, const char *filename) sechdrs = (void *)hdr + hdr->e_shoff; info->sechdrs = sechdrs; + /* Check if file offset is correct */ + if (hdr->e_shoff > info->size) { + fatal("section header offset=%u in file '%s' is bigger then filesize=%lu\n", hdr->e_shoff, filename, info->size); + return 0; + } + /* Fix endianness in section headers */ for (i = 0; i < hdr->e_shnum; i++) { sechdrs[i].sh_type = TO_NATIVE(sechdrs[i].sh_type);