aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/mod/modpost.c
diff options
context:
space:
mode:
authorPetr Stetiar <ynezz@true.cz>2007-08-27 06:15:07 -0400
committerSam Ravnborg <sam@neptun.(none)>2007-10-12 15:15:30 -0400
commita83710e584b8ef46fc44472ec6f0c342003416e8 (patch)
tree621cd4139b63f7a20efc5f29db54a34cfe0f64ea /scripts/mod/modpost.c
parent88f567f3a3c1901a40150b43fda87adad1b3e807 (diff)
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 <ynezz@true.cz> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Diffstat (limited to 'scripts/mod/modpost.c')
-rw-r--r--scripts/mod/modpost.c6
1 files changed, 6 insertions, 0 deletions
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)
381 sechdrs = (void *)hdr + hdr->e_shoff; 381 sechdrs = (void *)hdr + hdr->e_shoff;
382 info->sechdrs = sechdrs; 382 info->sechdrs = sechdrs;
383 383
384 /* Check if file offset is correct */
385 if (hdr->e_shoff > info->size) {
386 fatal("section header offset=%u in file '%s' is bigger then filesize=%lu\n", hdr->e_shoff, filename, info->size);
387 return 0;
388 }
389
384 /* Fix endianness in section headers */ 390 /* Fix endianness in section headers */
385 for (i = 0; i < hdr->e_shnum; i++) { 391 for (i = 0; i < hdr->e_shnum; i++) {
386 sechdrs[i].sh_type = TO_NATIVE(sechdrs[i].sh_type); 392 sechdrs[i].sh_type = TO_NATIVE(sechdrs[i].sh_type);