From 112ae0db7de2bf3824e7d6494875014efb255dc7 Mon Sep 17 00:00:00 2001 From: Jean-Marie 'Histausse' Mineau Date: Mon, 3 Mar 2025 15:55:09 +0100 Subject: [PATCH] fix hashmap mergin --- androscalpel/src/apk.rs | 4 +++- androscalpel/src/dex_writer.rs | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/androscalpel/src/apk.rs b/androscalpel/src/apk.rs index 111ebe5..1de2a9d 100644 --- a/androscalpel/src/apk.rs +++ b/androscalpel/src/apk.rs @@ -2687,7 +2687,9 @@ impl Apk { )? { instructions.push((addr, ins)); addr += ins_f.size() / 2; - labels.extend(ins_labels); + for (addr, mut label_l) in ins_labels.into_iter() { + labels.entry(addr).or_default().append(&mut label_l); + } } } let mut insns = vec![]; diff --git a/androscalpel/src/dex_writer.rs b/androscalpel/src/dex_writer.rs index b74fd0b..ddc6549 100644 --- a/androscalpel/src/dex_writer.rs +++ b/androscalpel/src/dex_writer.rs @@ -504,7 +504,7 @@ impl DexWriter { } Instruction::Goto { label } => { let (min_addr, max_addr) = label_min_max_addrs.get(label).ok_or(anyhow!( - "Label {label} not found in label estimation map, known labels are [{}]", + "Label {label} not found in label estimation map but used in Goto instruction. Known labels are [{}].", label_min_max_addrs .keys() .map(|string| string.as_str())