diff options
| author | Ajax <commial@gmail.com> | 2018-07-12 09:46:31 +0200 |
|---|---|---|
| committer | Ajax <commial@gmail.com> | 2018-07-12 09:46:31 +0200 |
| commit | b65c5473f12786c1d1b9721737d5cabbccf84806 (patch) | |
| tree | 2a99a32640b6df7c4b7eb3fe61297f9035326459 /miasm2/analysis/data_flow.py | |
| parent | 5fcecd3a58524e557f636c31eaaf80136a5cbd76 (diff) | |
| download | miasm-b65c5473f12786c1d1b9721737d5cabbccf84806.tar.gz miasm-b65c5473f12786c1d1b9721737d5cabbccf84806.zip | |
IR-Merge-blocks: ensure son is always in blocks
Avoid a corner case in which a block is still in the todo list after being deleted by others simplification, or case like a -> b -> c, with a and b in blocks, b being a jmpblock.
Diffstat (limited to 'miasm2/analysis/data_flow.py')
| -rw-r--r-- | miasm2/analysis/data_flow.py | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/miasm2/analysis/data_flow.py b/miasm2/analysis/data_flow.py index d0f2a0b1..62176bb1 100644 --- a/miasm2/analysis/data_flow.py +++ b/miasm2/analysis/data_flow.py @@ -476,7 +476,9 @@ def merge_blocks(ircfg, loc_key_entries): continue # Test head jmp only block - if son is not None and son not in loc_key_entries: + if (son is not None and + son not in loc_key_entries and + son in ircfg.blocks): # jmp only test done previously modified |= _remove_to_parent(ircfg, loc_key, son) todo.add(loc_key) |