From a83710e584b8ef46fc44472ec6f0c342003416e8 Mon Sep 17 00:00:00 2001 From: Petr Stetiar Date: Mon, 27 Aug 2007 12:15:07 +0200 Subject: 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 --- scripts/mod/modpost.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'scripts') 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); -- cgit v1.2.1