Don't use def if NULL. Move check earlier. Signed-off-by: Mark Wielaard <m...@redhat.com> --- src/ChangeLog | 4 ++++ src/readelf.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/ChangeLog b/src/ChangeLog index 6d3e951..be1d55f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2014-11-14 Mark Wielaard <m...@redhat.com> + + * readelf.c (handle_versym): Check def == NULL before use. + 2014-11-08 Mark Wielaard <m...@redhat.com> * readelf.c (handle_versym): Initialize vername and filename array diff --git a/src/readelf.c b/src/readelf.c index 01c644f..243e16e 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -2744,11 +2744,14 @@ handle_versym (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr) /* Get the data at the next offset. */ GElf_Verdef defmem; GElf_Verdef *def = gelf_getverdef (defdata, offset, &defmem); + if (unlikely (def == NULL)) + break; + GElf_Verdaux auxmem; GElf_Verdaux *aux = gelf_getverdaux (defdata, offset + def->vd_aux, &auxmem); - if (unlikely (def == NULL || aux == NULL)) + if (unlikely (aux == NULL)) break; vername[def->vd_ndx & 0x7fff] -- 1.8.3.1