From 704a49799738678e53147aeeb07f5b6c4e8d48ce Mon Sep 17 00:00:00 2001 From: cyanpencil Date: Fri, 13 Jul 2018 17:31:53 +0200 Subject: [PATCH] fix string name not freed --- libr/core/disasm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libr/core/disasm.c b/libr/core/disasm.c index e815c39402261..f7133b5db580d 100644 --- a/libr/core/disasm.c +++ b/libr/core/disasm.c @@ -1190,7 +1190,6 @@ static void ds_show_xrefs(RDisasmState *ds) { if (refi->at == ds->at) { fun = fcnIn (ds, refi->addr, -1); if (fun) { - name = strdup (fun->name); if (iter != xrefs->tail) { ut64 next_addr = ((RAnalRef *)(iter->n->data))->addr; next_fun = r_anal_get_fcn_in (core->anal, next_addr, -1); @@ -1199,11 +1198,11 @@ static void ds_show_xrefs(RDisasmState *ds) { continue; } } + name = strdup (fun->name); r_list_append (addrs, refi->addr); } else { f = r_flag_get_at (core->flags, refi->addr, true); if (f) { - name = strdup (f->name); if (iter != xrefs->tail) { ut64 next_addr = ((RAnalRef *)(iter->n->data))->addr; next_f = r_flag_get_at (core->flags, next_addr, true); @@ -1212,6 +1211,7 @@ static void ds_show_xrefs(RDisasmState *ds) { continue; } } + name = strdup (f->name); r_list_append (addrs, refi->addr - f->offset); } else { name = strdup ("unk");