summaryrefslogtreecommitdiff
path: root/findtextrel/findtextrel.c
diff options
context:
space:
mode:
Diffstat (limited to 'findtextrel/findtextrel.c')
-rw-r--r--findtextrel/findtextrel.c10
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) {