diff options
| -rw-r--r-- | miasm/expression/simplifications_common.py | 18 |
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) |