about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--miasm/expression/simplifications_common.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/miasm/expression/simplifications_common.py b/miasm/expression/simplifications_common.py
index 68d98c00..af409286 100644
--- a/miasm/expression/simplifications_common.py
+++ b/miasm/expression/simplifications_common.py
@@ -71,28 +71,34 @@ def simp_cst_propagation(e_s, expr):
                 shifter = int(int2) % int2.size
                 out = (int(int1) << shifter) | (int(int1) >> (int2.size - shifter))
             elif op_name == '/':
-                assert int(int2), "division by 0"
+                if int(int2) == 0:
+                    return expr
                 out = int(int1) // int(int2)
             elif op_name == '%':
-                assert int(int2), "division by 0"
+                if int(int2) == 0:
+                    return expr
                 out = int(int1) % int(int2)
             elif op_name == 'sdiv':
-                assert int(int2), "division by 0"
+                if int(int2) == 0:
+                    return expr
                 tmp1 = mod_size2int[int1.size](int(int1))
                 tmp2 = mod_size2int[int2.size](int(int2))
                 out = mod_size2uint[int1.size](tmp1 // tmp2)
             elif op_name == 'smod':
-                assert int(int2), "division by 0"
+                if int(int2) == 0:
+                    return expr
                 tmp1 = mod_size2int[int1.size](int(int1))
                 tmp2 = mod_size2int[int2.size](int(int2))
                 out = mod_size2uint[int1.size](tmp1 % tmp2)
             elif op_name == 'umod':
-                assert int(int2), "division by 0"
+                if int(int2) == 0:
+                    return expr
                 tmp1 = mod_size2uint[int1.size](int(int1))
                 tmp2 = mod_size2uint[int2.size](int(int2))
                 out = mod_size2uint[int1.size](tmp1 % tmp2)
             elif op_name == 'udiv':
-                assert int(int2), "division by 0"
+                if int(int2) == 0:
+                    return expr
                 tmp1 = mod_size2uint[int1.size](int(int1))
                 tmp2 = mod_size2uint[int2.size](int(int2))
                 out = mod_size2uint[int1.size](tmp1 // tmp2)