about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--miasm2/expression/simplifications_common.py2
-rw-r--r--test/expression/simplifications.py4
2 files changed, 5 insertions, 1 deletions
diff --git a/miasm2/expression/simplifications_common.py b/miasm2/expression/simplifications_common.py
index ba938db5..02b43c4b 100644
--- a/miasm2/expression/simplifications_common.py
+++ b/miasm2/expression/simplifications_common.py
@@ -137,7 +137,7 @@ def simp_cst_propagation(e_s, expr):
         return ExprOp('+', args[0], -args[1])
 
     # A op 0 => 0
-    if op_name in ['&', "*"] and args[1].is_int(0):
+    if op_name in ['&', "*"] and args[-1].is_int(0):
         return ExprInt(0, expr.size)
 
     # - (A + B +...) => -A + -B + -C
diff --git a/test/expression/simplifications.py b/test/expression/simplifications.py
index 8923cb3e..e4c3f2e9 100644
--- a/test/expression/simplifications.py
+++ b/test/expression/simplifications.py
@@ -134,6 +134,10 @@ to_test = [(ExprInt(1, 32) - ExprInt(1, 32), ExprInt(0, 32)),
     (ExprOp('*', a, b, c, ExprInt(0x12, 32))[0:17],
      ExprOp(
      '*', a[0:17], b[0:17], c[0:17], ExprInt(0x12, 17))),
+    (ExprOp('*', a, ExprInt(0x0, 32)),
+     ExprInt(0x0, 32)),
+    (ExprOp('&', a, ExprInt(0x0, 32)),
+     ExprInt(0x0, 32)),
     (ExprOp('*', a, ExprInt(0xffffffff, 32)),
      -a),
     (ExprOp('*', -a, -b, c, ExprInt(0x12, 32)),