[binutils-gdb] riscv disassembler leak

Alan Modra amodra@sourceware.org
Sat Feb 15 22:35:32 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=3a69ff93b5667f357636b292206b43c90b416290

commit 3a69ff93b5667f357636b292206b43c90b416290
Author: Alan Modra <amodra@gmail.com>
Date:   Fri Feb 14 23:10:29 2025 +1030

    riscv disassembler leak
    
    Commit 3f61a38b5e81 moved the disassembler subset_list from a static
    variable to disassembler private_data.  It is now malloc'd in
    riscv_init_disasm_info so should be freed when disassemble_free_target
    runs.
    
            * riscv-dis.c (disassemble_free_riscv): Free subset_list.

Diff:
---
 opcodes/riscv-dis.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/opcodes/riscv-dis.c b/opcodes/riscv-dis.c
index d67b2c2aaf0..84c6deef7b6 100644
--- a/opcodes/riscv-dis.c
+++ b/opcodes/riscv-dis.c
@@ -1683,5 +1683,8 @@ void disassemble_free_riscv (struct disassemble_info *info ATTRIBUTE_UNUSED)
 {
   struct riscv_private_data *pd = info->private_data;
   if (pd)
-    riscv_release_subset_list (pd->riscv_rps_dis.subset_list);
+    {
+      riscv_release_subset_list (pd->riscv_rps_dis.subset_list);
+      free (pd->riscv_rps_dis.subset_list);
+    }
 }


More information about the Binutils-cvs mailing list