From 06d35cf884c2b99ef84bdf832e6c0f8c590c2a66 Mon Sep 17 00:00:00 2001 From: Zion Leonahenahe Basque Date: Thu, 18 Jul 2024 12:48:55 -0700 Subject: [PATCH] Handle some decompiler failuer in AM (#104) * Handle some decompiler failuer in AM * bump --- decomp2dbg/__init__.py | 2 +- decompilers/d2d_angr/server.py | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/decomp2dbg/__init__.py b/decomp2dbg/__init__.py index 8701bb8..0307cd7 100644 --- a/decomp2dbg/__init__.py +++ b/decomp2dbg/__init__.py @@ -1,4 +1,4 @@ -__version__ = "3.9.4" +__version__ = "3.9.5" try: from .clients.client import DecompilerClient diff --git a/decompilers/d2d_angr/server.py b/decompilers/d2d_angr/server.py index 33747f0..dc2026f 100644 --- a/decompilers/d2d_angr/server.py +++ b/decompilers/d2d_angr/server.py @@ -80,7 +80,12 @@ def decompile(self, addr: int): func_addr = self._instance.cfg.get_any_node(addr, anyaddr=True).function_address func = self._instance.kb.functions[func_addr] decomp = self._decompile_function(func) - pos = decomp.map_addr_to_pos.get_nearest_pos(addr) + try: + pos = decomp.map_addr_to_pos.get_nearest_pos(addr) + except Exception as e: + print(f"Failed to get nearest pos: {e} for {hex(addr)}, skipping decomp") + return resp + size = len(decomp.text) line_end = decomp.text.find("\n", pos) line_start = size - decomp.text[::-1].find("\n", size - line_end)