]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Re: Fix null pointer dereference in process_debug_info()
authorAlan Modra <amodra@gmail.com>
Thu, 11 Apr 2024 23:25:02 +0000 (08:55 +0930)
committerAlan Modra <amodra@gmail.com>
Thu, 11 Apr 2024 23:30:52 +0000 (09:00 +0930)
read_bases has a potential null-pointer deref too, and without a
debug_info_p there isn't any point in calling read_bases.

* dwarf.c (process_debug_info): Don't call read_bases when
debug_info_p is NULL.

binutils/dwarf.c

index ce508d0315ff93c85f9d1a692e2d185762ac4c38..3ce79f4e5d15643471f1d934bc29375aca5f1270 100644 (file)
@@ -4236,7 +4236,7 @@ process_debug_info (struct dwarf_section * section,
             Only needed for the top DIE on DWARFv5+.
             No simiar treatment for loclists_base because there should
             be no loclist attributes in top DIE.  */
-         if (compunit.cu_version >= 5 && level == 0)
+         if (debug_info_p && compunit.cu_version >= 5 && level == 0)
            {
              int64_t stemp;
 
@@ -4248,17 +4248,14 @@ process_debug_info (struct dwarf_section * section,
                          compunit.cu_version,
                          debug_info_p);
 
-             if (debug_info_p)
+             /* This check was in place before, keep it.  */
+             stemp = debug_info_p->rnglists_base;
+             if (stemp < 0)
                {
-                 /* This check was in place before, keep it.  */
-                 stemp = debug_info_p->rnglists_base;
-                 if (stemp < 0)
-                   {
-                     warn (_("CU @ %#" PRIx64 " has has a negative rnglists_base "
-                             "value of %#" PRIx64 " - treating as zero"),
-                           debug_info_p->cu_offset, stemp);
-                     debug_info_p->rnglists_base = 0;
-                   }
+                 warn (_("CU @ %#" PRIx64 " has has a negative rnglists_base "
+                         "value of %#" PRIx64 " - treating as zero"),
+                       debug_info_p->cu_offset, stemp);
+                 debug_info_p->rnglists_base = 0;
                }
            }