[libbacktrace] Fix .gnu_debugaltlink build-id check
authorTom de Vries <tdevries@suse.de>
Thu, 31 Jan 2019 12:17:32 +0000 (12:17 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Thu, 31 Jan 2019 12:17:32 +0000 (12:17 +0000)
The 'debugaltlink_name_len =+ 1' bug reported in PR89136 exposes the fact that
the build-id is not verified for the .gnu_debugaltlink.

Fix both problems.

2019-01-31  Tom de Vries  <tdevries@suse.de>

PR libbacktrace/89136
* elf.c (elf_add): Read build-id if with_buildid_data.  Fix
'debugaltlink_name_len =+ 1'.

From-SVN: r268419

libbacktrace/ChangeLog
libbacktrace/elf.c

index 811489e31b9908331dbc33622f18e234d05ce436..7d0c582d91f4d4b43ac215f0779bd5341d1f85f2 100644 (file)
@@ -1,3 +1,9 @@
+2019-01-31  Tom de Vries  <tdevries@suse.de>
+
+       PR libbacktrace/89136
+       * elf.c (elf_add): Read build-id if with_buildid_data.  Fix
+       'debugaltlink_name_len =+ 1'.
+
 2019-01-29  Tom de Vries  <tdevries@suse.de>
 
        * install-debuginfo-for-buildid.sh.in: New script.
index d933052200c0ed107555e88244ca673c02a7bdf3..f3988ec02a05400b5631eea810589035a269a632 100644 (file)
@@ -2864,7 +2864,7 @@ elf_add (struct backtrace_state *state, const char *filename, int descriptor,
       /* Read the build ID if present.  This could check for any
         SHT_NOTE section with the right note name and type, but gdb
         looks for a specific section name.  */
-      if (!debuginfo
+      if ((!debuginfo || with_buildid_data != NULL)
          && !buildid_view_valid
          && strcmp (name, ".note.gnu.build-id") == 0)
        {
@@ -2938,7 +2938,7 @@ elf_add (struct backtrace_state *state, const char *filename, int descriptor,
          if (debugaltlink_name_len < shdr->sh_size)
            {
              /* Include terminating zero.  */
-             debugaltlink_name_len =+ 1;
+             debugaltlink_name_len += 1;
 
              debugaltlink_buildid_data
                = debugaltlink_data + debugaltlink_name_len;