From: Mark Wielaard Date: Tue, 16 Dec 2014 21:47:39 +0000 (+0100) Subject: libdw: Check diridx is valid under DW_LNE_define_file in dwarf_getsrclines. X-Git-Tag: elfutils-0.161~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ecd78d3b4303db5b05666578162b230b23936797;p=thirdparty%2Felfutils.git libdw: Check diridx is valid under DW_LNE_define_file in dwarf_getsrclines. Signed-off-by: Mark Wielaard --- diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 4f03b736e..61c987113 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,8 @@ +2014-12-16 Mark Wielaard + + * dwarf_getsrclines.c (read_srclines): Check diridx is valid under + DW_LNE_define_file. + 2014-12-16 Mark Wielaard * dwarf_getpubnames.c (dwarf_getpubnames): Make sure there is enough diff --git a/libdw/dwarf_getsrclines.c b/libdw/dwarf_getsrclines.c index d47794466..053b30f2f 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;