PR29647, objdump -S looping

Message ID Yz0Gsxdxe0TePbJT@squeak.grove.modra.org
State New, archived
Headers
Series PR29647, objdump -S looping |

Commit Message

Alan Modra Oct. 5, 2022, 4:23 a.m. UTC
  Fuzzed input with this in .debug_line
  [0x0000003b]  Special opcode 115: advance Address by 8 to 0x401180 and Line by -2 to -1

	PR 29647
	* objdump.c (print_line): Don't decrement line number here..
	(dump_lines): ..do so here instead, ensuring loop terminates.
  

Patch

diff --git a/binutils/objdump.c b/binutils/objdump.c
index 6610906f83e..f7b4695c3e8 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -2069,7 +2069,6 @@  print_line (struct print_file_list *p, unsigned int linenum)
   const char *l;
   size_t len;
 
-  --linenum;
   if (linenum >= p->maxline)
     return;
   l = p->linemap [linenum];
@@ -2088,7 +2087,9 @@  dump_lines (struct print_file_list *p, unsigned int start, unsigned int end)
 {
   if (p->map == NULL)
     return;
-  while (start <= end)
+  if (start != 0)
+    --start;
+  while (start < end)
     {
       print_line (p, start);
       start++;