diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2017-09-24 19:18:50 +0200 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2017-10-03 19:24:21 +0200 |
| commit | b8aa87630d125151adf7cf6621d3fcb44b2d6107 (patch) | |
| tree | be678662a5d4b5014df7aa63055d04e65c424653 /miasm2/analysis/cst_propag.py | |
| parent | 962a93e30bccdbd8ef7c39b9e1cac0d16105b94d (diff) | |
| download | miasm-b8aa87630d125151adf7cf6621d3fcb44b2d6107.tar.gz miasm-b8aa87630d125151adf7cf6621d3fcb44b2d6107.zip | |
Ctypes: allow analysis on incomplete graphs
Diffstat (limited to '')
| -rw-r--r-- | miasm2/analysis/cst_propag.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/miasm2/analysis/cst_propag.py b/miasm2/analysis/cst_propag.py index d55d7e60..2a439ccc 100644 --- a/miasm2/analysis/cst_propag.py +++ b/miasm2/analysis/cst_propag.py @@ -139,9 +139,10 @@ def compute_cst_propagation_states(ir_arch, init_addr, init_infos): if (lbl, state) in done: continue done.add((lbl, state)) - symbexec_engine = SymbExecState(ir_arch, state) + if lbl not in ir_arch.blocks: + continue - assert lbl in ir_arch.blocks + symbexec_engine = SymbExecState(ir_arch, state) addr = symbexec_engine.emul_ir_block(lbl) symbexec_engine.del_mem_above_stack(ir_arch.sp) @@ -173,6 +174,8 @@ def propagate_cst_expr(ir_arch, addr, init_infos): states = compute_cst_propagation_states(ir_arch, addr, init_infos) cst_propag_link = {} for lbl, state in states.iteritems(): + if lbl not in ir_arch.blocks: + continue symbexec = SymbExecStateFix(ir_arch, state, cst_propag_link) symbexec.emulbloc(ir_arch.blocks[lbl]) return cst_propag_link |