about summary refs log tree commit diff stats
path: root/miasm2/analysis/cst_propag.py
diff options
context:
space:
mode:
authorCamille Mougey <commial@gmail.com>2017-10-03 23:02:09 +0200
committerGitHub <noreply@github.com>2017-10-03 23:02:09 +0200
commit58ed3f716b90da8d879aaa408f0c7ce1ea86a22c (patch)
tree28af824c75ce2b67c3300f530e76971fdb98884a /miasm2/analysis/cst_propag.py
parentb6b4b7360ecdabb9fc7949c461572754ce36a590 (diff)
parent5f1e164fe1055a923856a0c82feaee92888c021f (diff)
downloadmiasm-58ed3f716b90da8d879aaa408f0c7ce1ea86a22c.tar.gz
miasm-58ed3f716b90da8d879aaa408f0c7ce1ea86a22c.zip
Merge pull request #618 from serpilliere/fix_propag
Ctypes: allow analysis on incomplete graphs
Diffstat (limited to 'miasm2/analysis/cst_propag.py')
-rw-r--r--miasm2/analysis/cst_propag.py7
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