about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--miasm2/expression/simplifications_cond.py8
-rw-r--r--miasm2/jitter/vm_mngr.c2
-rw-r--r--test/expression/simplifications.py6
3 files changed, 11 insertions, 5 deletions
diff --git a/miasm2/expression/simplifications_cond.py b/miasm2/expression/simplifications_cond.py
index c6e455b6..a5acdba6 100644
--- a/miasm2/expression/simplifications_cond.py
+++ b/miasm2/expression/simplifications_cond.py
@@ -197,13 +197,13 @@ def __comp_signed(arg1, arg2):
     """Return ExprInt1(1) if arg1 <s arg2 else ExprInt1(0)
     @arg1, @arg2: ExprInt"""
 
-    val1 = arg1.arg
+    val1 = int(arg1.arg)
     if val1 >> (arg1.size - 1) == 1:
-        val1 = - (arg1.mask.arg ^ val1 + 1)
+        val1 = - ((int(arg1.mask.arg) ^ val1) + 1)
 
-    val2 = arg2.arg
+    val2 = int(arg2.arg)
     if val2 >> (arg2.size - 1) == 1:
-        val2 = - (arg2.mask.arg ^ val2 + 1)
+        val2 = - ((int(arg2.mask.arg) ^ val2) + 1)
 
     return m2_expr.ExprInt1(1) if (val1 < val2) else m2_expr.ExprInt1(0)
 
diff --git a/miasm2/jitter/vm_mngr.c b/miasm2/jitter/vm_mngr.c
index 04ff76ce..1d3dd891 100644
--- a/miasm2/jitter/vm_mngr.c
+++ b/miasm2/jitter/vm_mngr.c
@@ -226,7 +226,7 @@ static uint64_t memory_page_read(vm_mngr_t* vm_mngr, unsigned int my_size, uint6
 			if (!mpn)
 				return 0;
 			addr = &((unsigned char*)mpn->ad_hp)[ad - mpn->ad];
-			ret |= (*((unsigned char*)addr)&0xFF)<<(index);
+			ret |= ((uint64_t)(*((unsigned char*)addr)&0xFF))<<(index);
 			index +=8;
 			new_size -= 8;
 			ad ++;
diff --git a/test/expression/simplifications.py b/test/expression/simplifications.py
index 1b0c3d6c..99cc7c35 100644
--- a/test/expression/simplifications.py
+++ b/test/expression/simplifications.py
@@ -351,6 +351,12 @@ to_test = [
     (ExprOp_equal(ExprInt32(12), ExprInt32(-12)), ExprInt1(0)),
     (ExprCond(a - b, ExprInt1(0), ExprInt1(1)), ExprOp_equal(a, b)),
     (ExprCond(a + b, ExprInt1(0), ExprInt1(1)), ExprOp_equal(a, -b)),
+    (ExprOp_inf_signed(ExprInt32(-2), ExprInt32(3)), ExprInt1(1)),
+    (ExprOp_inf_signed(ExprInt32(3), ExprInt32(-3)), ExprInt1(0)),
+    (ExprOp_inf_signed(ExprInt32(2), ExprInt32(3)), ExprInt1(1)),
+    (ExprOp_inf_signed(ExprInt32(-3), ExprInt32(-2)), ExprInt1(1)),
+    (ExprOp_inf_signed(ExprInt32(0), ExprInt32(2)), ExprInt1(1)),
+    (ExprOp_inf_signed(ExprInt32(-3), ExprInt32(0)), ExprInt1(1)),
 ]
 
 expr_simp_cond = ExpressionSimplifier()