libdw: Make sure there is enough space to read offset in dwarf_getpubnames.

Signed-off-by: Mark Wielaard <mjw@redhat.com>
This commit is contained in:
Mark Wielaard
2014-12-16 16:41:19 +01:00
parent acb5069988
commit 7f9ea70d2b
2 changed files with 8 additions and 0 deletions
+5
View File
@@ -1,3 +1,8 @@
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
+3
View File
@@ -199,6 +199,8 @@ dwarf_getpubnames (dbg, callback, arg, offset)
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
@@ -215,6 +217,7 @@ dwarf_getpubnames (dbg, callback, arg, offset)
readp = (unsigned char *) memchr (gl.name, '\0', endp - readp);
if (unlikely (readp == NULL))
{
invalid_dwarf:
__libdw_seterrno (DWARF_E_INVALID_DWARF);
return -1l;
}