From ecd78d3b4303db5b05666578162b230b23936797 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 16 Dec 2014 22:47:39 +0100 Subject: [PATCH] libdw: Check diridx is valid under DW_LNE_define_file in dwarf_getsrclines. Signed-off-by: Mark Wielaard --- libdw/ChangeLog | 5 +++++ libdw/dwarf_getsrclines.c | 5 +++++ 2 files changed, 10 insertions(+) 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; -- 2.47.3