about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2021-09-04 18:06:46 +0200
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2021-09-04 18:06:46 +0200
commitdb8c1da4b7ae530ab44976056a6acc69cd22d967 (patch)
tree61b418a61ca2feec76d4e22c1be15f12e9c253a5
parent9a36c6d7849335c83a9460fc558afb55ff0a2aa1 (diff)
downloadmiasm-db8c1da4b7ae530ab44976056a6acc69cd22d967.tar.gz
miasm-db8c1da4b7ae530ab44976056a6acc69cd22d967.zip
Fix analysis on incomplete ircfg graphs
-rw-r--r--miasm/analysis/data_flow.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/miasm/analysis/data_flow.py b/miasm/analysis/data_flow.py
index ae44ed59..9274d9d6 100644
--- a/miasm/analysis/data_flow.py
+++ b/miasm/analysis/data_flow.py
@@ -1280,6 +1280,8 @@ def update_phi_with_deleted_edges(ircfg, edges_to_del):
     modified = False
     blocks = dict(ircfg.blocks)
     for loc_dst, loc_srcs in viewitems(phi_locs_to_srcs):
+        if loc_dst not in ircfg.blocks:
+            continue
         block = ircfg.blocks[loc_dst]
         if not irblock_has_phi(block):
             continue
@@ -1353,6 +1355,8 @@ def del_unused_edges(ircfg, heads):
     for src, dst in edges_to_del_1.union(edges_to_del_2):
         ircfg.del_edge(src, dst)
     for node in nodes_to_del:
+        if node not in ircfg.blocks:
+            continue
         block = ircfg.blocks[node]
         ircfg.del_node(node)
         del ircfg.blocks[node]