Hi,

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.

OK for trunk?

Thanks,
- Tom

[libbacktrace] Fix .gnu_debugaltlink build-id check

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

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

---
 libbacktrace/elf.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libbacktrace/elf.c b/libbacktrace/elf.c
index d933052200c..f3988ec02a0 100644
--- a/libbacktrace/elf.c
+++ b/libbacktrace/elf.c
@@ -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;

Reply via email to