libdwfl: Make sure the note len increases each iteration
authorMark Wielaard <mark@klomp.org>
Fri, 17 Dec 2021 17:09:31 +0000 (18:09 +0100)
committerMark Wielaard <mark@klomp.org>
Sat, 18 Dec 2021 01:24:28 +0000 (02:24 +0100)
In dwfl_segment_report_module we have an overflow check when reading
notes, but we could still not make any progress if the number of bytes
read (len) didn't increase at all. Check len > last_len.

Signed-off-by: Mark Wielaard <mark@klomp.org>
libdwfl/ChangeLog
libdwfl/dwfl_segment_report_module.c

index 6a3e041..d00ce70 100644 (file)
@@ -1,3 +1,8 @@
+2021-12-08  Mark Wielaard  <mark@klomp.org>
+
+       * dwfl_segment_report_module.c (dwfl_segment_report_module): Make
+       sure the note len increases each iteration.
+
 2021-12-17  Mark Wielaard  <mark@klomp.org>
 
        * libdwflP.h (dwfl_segment_report_module): Add maxread argument.
index 3e87d20..89e0510 100644 (file)
@@ -562,7 +562,7 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
                   note_desc = notes + len;
 
                   if (unlikely (filesz < len + nh->n_descsz
-                                || len < last_len
+                                || len <= last_len
                                 || len + nh->n_descsz < last_len))
                     break;