From 306253b2cfa297c1eb0d30852bdcf96375db24e2 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 5 Oct 2022 11:25:26 +1030 Subject: [PATCH] PR29647, objdump -S looping 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. --- binutils/objdump.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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++; -- 2.30.2