diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2021-09-04 18:06:46 +0200 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2021-09-04 18:06:46 +0200 |
| commit | db8c1da4b7ae530ab44976056a6acc69cd22d967 (patch) | |
| tree | 61b418a61ca2feec76d4e22c1be15f12e9c253a5 | |
| parent | 9a36c6d7849335c83a9460fc558afb55ff0a2aa1 (diff) | |
| download | miasm-db8c1da4b7ae530ab44976056a6acc69cd22d967.tar.gz miasm-db8c1da4b7ae530ab44976056a6acc69cd22d967.zip | |
Fix analysis on incomplete ircfg graphs
| -rw-r--r-- | miasm/analysis/data_flow.py | 4 |
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] |