]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
libdw: Check diridx is valid under DW_LNE_define_file in dwarf_getsrclines.
authorMark Wielaard <mjw@redhat.com>
Tue, 16 Dec 2014 21:47:39 +0000 (22:47 +0100)
committerMark Wielaard <mjw@redhat.com>
Wed, 17 Dec 2014 15:49:03 +0000 (16:49 +0100)
Signed-off-by: Mark Wielaard <mjw@redhat.com>
libdw/ChangeLog
libdw/dwarf_getsrclines.c

index 4f03b736e693a9cc3912f75653dffcb003c13c09..61c987113a509bee1d57f888b91c82fbf6d86410 100644 (file)
@@ -1,3 +1,8 @@
+2014-12-16  Mark Wielaard  <mjw@redhat.com>
+
+       * dwarf_getsrclines.c (read_srclines): Check diridx is valid under
+       DW_LNE_define_file.
+
 2014-12-16  Mark Wielaard  <mjw@redhat.com>
 
        * dwarf_getpubnames.c (dwarf_getpubnames): Make sure there is enough
index d477944669779a02f7b0b2fd04b615a9293d9d98..053b30f2f0a5874d547d18a4f941c0c178e6f99f 100644 (file)
@@ -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;