about summary refs log tree commit diff stats
path: root/miasm2/core/cpu.py
diff options
context:
space:
mode:
authorcoco <coco@hexgolems.com>2017-08-02 12:19:19 +0200
committercoco <coco@hexgolems.com>2017-08-02 12:19:19 +0200
commit23b4198eac3f70e708ffcc3ccecb19dfa5cd497e (patch)
tree02e4beac50f8b79b450a30a26216a0fce756b2a7 /miasm2/core/cpu.py
parent5b27a6e9978419f5317a65b9858697e8bd2eea66 (diff)
downloadmiasm-23b4198eac3f70e708ffcc3ccecb19dfa5cd497e.tar.gz
miasm-23b4198eac3f70e708ffcc3ccecb19dfa5cd497e.zip
fix atomic_mode leak
Diffstat (limited to 'miasm2/core/cpu.py')
-rw-r--r--miasm2/core/cpu.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/miasm2/core/cpu.py b/miasm2/core/cpu.py
index 3502397d..aa94773f 100644
--- a/miasm2/core/cpu.py
+++ b/miasm2/core/cpu.py
@@ -1169,7 +1169,11 @@ class cls_mn(object):
                     if bs_l * 8 - offset_b < l:
                         getok = False
                         break
-                    bv = cls.getbits(bs, mode, offset_b, l)
+                    try:
+                        bv = cls.getbits(bs, mode, offset_b, l)
+                    except:
+                        bs_o.leave_atomic_mode()
+                        raise
                     offset_b += l
                     if not f.fname in fname_values:
                         fname_values[f.fname] = bv