about summary refs log tree commit diff stats
path: root/miasm2/jitter/vm_mngr.c
diff options
context:
space:
mode:
authorAjax <commial@gmail.com>2018-01-26 17:25:22 +0100
committerAjax <commial@gmail.com>2018-01-26 17:25:22 +0100
commitab8849535f972d596f87a00071c382cb693fa072 (patch)
tree2e223bd356efe662ab0ad26292d81865d6c9f216 /miasm2/jitter/vm_mngr.c
parentb1aa02dffd6f321084d6b3c337ad42b131560e88 (diff)
downloadmiasm-ab8849535f972d596f87a00071c382cb693fa072.tar.gz
miasm-ab8849535f972d596f87a00071c382cb693fa072.zip
Fix BSR / BSL / CLZ implementation to avoid signed overflow
Diffstat (limited to '')
-rw-r--r--miasm2/jitter/vm_mngr.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/miasm2/jitter/vm_mngr.c b/miasm2/jitter/vm_mngr.c
index 59cbdf6e..c628aeff 100644
--- a/miasm2/jitter/vm_mngr.c
+++ b/miasm2/jitter/vm_mngr.c
@@ -843,24 +843,23 @@ unsigned int rcr_rez_op(unsigned int size, unsigned int a, unsigned int b, unsig
     return tmp;
 }
 
-unsigned int x86_bsr(unsigned int size, uint64_t src)
+unsigned int x86_bsr(uint64_t size, uint64_t src)
 {
-	int i;
+	uint64_t i;
 
 	for (i=size-1; i>=0; i--){
-		if (src & (1<<i))
+		if (src & (1ull << i))
 			return i;
 	}
 	fprintf(stderr, "sanity check error bsr\n");
 	exit(0);
 }
 
-unsigned int x86_bsf(unsigned int size, uint64_t src)
+unsigned int x86_bsf(uint64_t size, uint64_t src)
 {
-	int i;
-
+	uint64_t i;
 	for (i=0; i<size; i++){
-		if (src & (1<<i))
+		if (src & (1ull << i))
 			return i;
 	}
 	fprintf(stderr, "sanity check error bsf\n");