From 5cd2b85eba535f3623129f617f331210f62afd76 Mon Sep 17 00:00:00 2001 From: Ciaran Woodward Date: Fri, 1 Sep 2023 12:13:55 +0100 Subject: [PATCH] gdb/riscv: Fix oob memory access when printing info registers If the length of a register name was greater than 15, print_spaces was called with a negative number, which prints random data from the heap instead of the requested number of spaces. This could happen if a target-description file was used to specify additional long-named registers. Fix is simple - don't ask for fewer than 1 space (since we still want column separation). Approved-by: Kevin Buettner --- gdb/riscv-tdep.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c index ae18eb64452..3a2891c2c92 100644 --- a/gdb/riscv-tdep.c +++ b/gdb/riscv-tdep.c @@ -1145,7 +1145,7 @@ riscv_print_one_register_info (struct gdbarch *gdbarch, enum tab_stops { value_column_1 = 15 }; gdb_puts (name, file); - print_spaces (value_column_1 - strlen (name), file); + print_spaces (std::max (1, value_column_1 - strlen (name)), file); try { -- 2.30.2