diff options
Diffstat (limited to 'findtextrel/findtextrel.c')
| -rw-r--r-- | findtextrel/findtextrel.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/findtextrel/findtextrel.c b/findtextrel/findtextrel.c index ad493cf75398..94bff9e18f04 100644 --- a/findtextrel/findtextrel.c +++ b/findtextrel/findtextrel.c @@ -38,7 +38,7 @@ #include "_elftc.h" -ELFTC_VCSID("$Id: findtextrel.c 3359 2016-01-24 17:06:20Z jkoshy $"); +ELFTC_VCSID("$Id: findtextrel.c 3461 2016-05-10 18:00:05Z emaste $"); static struct option longopts[] = { {"help", no_argument, NULL, 'H'}, @@ -74,6 +74,10 @@ find_symbol(const char *fn, Elf *e, Elf_Data *d, GElf_Shdr *sh, uintmax_t off) GElf_Sym sym; int i, len; + if (sh->sh_entsize == 0) { + warnx("invalid sh_entsize"); + return (NULL); + } len = (int) (d->d_size / sh->sh_entsize); for (i = 0; i < len; i++) { if (gelf_getsym(d, i, &sym) != &sym) { @@ -240,6 +244,10 @@ examine_reloc(const char *fn, Elf *e, Elf_Data *d, GElf_Shdr *sh, GElf_Phdr *ph, int i, j, len; GElf_Rel rel; + if (sh->sh_entsize == 0) { + warnx("invalid sh_entsize"); + return; + } len = (int) (d->d_size / sh->sh_entsize); for (i = 0; i < len; i++) { if (sh->sh_type == SHT_REL) { |
