Signed-off-by: Mark Wielaard <mjw@redhat.com>
+2014-12-16 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_getpubnames.c (dwarf_getpubnames): Make sure there is enough
+ space to read die offset.
+
2014-12-16 Mark Wielaard <mjw@redhat.com>
* dwarf_getsrclines.c (read_srclines): Correct overflow check for
while (1)
{
/* READP points to the next offset/name pair. */
+ if (readp + dbg->pubnames_sets[cnt].address_len > endp)
+ goto invalid_dwarf;
if (dbg->pubnames_sets[cnt].address_len == 4)
gl.die_offset = read_4ubyte_unaligned_inc (dbg, readp);
else
readp = (unsigned char *) memchr (gl.name, '\0', endp - readp);
if (unlikely (readp == NULL))
{
+ invalid_dwarf:
__libdw_seterrno (DWARF_E_INVALID_DWARF);
return -1l;
}