Signed-off-by: Mark Wielaard <[email protected]> --- libdw/ChangeLog | 5 +++++ libdw/dwarf_getsrclines.c | 5 +++++ 2 files changed, 10 insertions(+)
diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 4f03b73..61c9871 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,5 +1,10 @@ 2014-12-16 Mark Wielaard <[email protected]> + * dwarf_getsrclines.c (read_srclines): Check diridx is valid under + DW_LNE_define_file. + +2014-12-16 Mark Wielaard <[email protected]> + * dwarf_getpubnames.c (dwarf_getpubnames): Make sure there is enough space to read die offset. diff --git a/libdw/dwarf_getsrclines.c b/libdw/dwarf_getsrclines.c index d477944..053b30f 100644 --- a/libdw/dwarf_getsrclines.c +++ b/libdw/dwarf_getsrclines.c @@ -469,6 +469,11 @@ read_srclines (Dwarf *dbg, if (unlikely (linep >= lineendp)) goto invalid_data; get_uleb128 (diridx, linep, lineendp); + if (unlikely (diridx >= ndirlist)) + { + __libdw_seterrno (DWARF_E_INVALID_DIR_IDX); + goto invalid_data; + } Dwarf_Word mtime; if (unlikely (linep >= lineendp)) goto invalid_data; -- 2.1.0
