about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorserpilliere <serpilliere@users.noreply.github.com>2020-08-27 07:49:33 +0200
committerGitHub <noreply@github.com>2020-08-27 07:49:33 +0200
commit5d8beb271d9890241a6d61dd476fab26ca37ebbf (patch)
tree67f6e0848a48e51e5c4643fcd361348453361f62
parentef7706905af9b6ef152d5b624968de44d5e80483 (diff)
parentf41f7bc91b7afccf2ff5744bbb86f9aa130454af (diff)
downloadmiasm-5d8beb271d9890241a6d61dd476fab26ca37ebbf.tar.gz
miasm-5d8beb271d9890241a6d61dd476fab26ca37ebbf.zip
Merge pull request #1272 from IridiumXOR/master
Fix overflow if virtual memory page size >= 4GiB
-rw-r--r--miasm/jitter/vm_mngr.c4
-rw-r--r--miasm/jitter/vm_mngr.h2
-rw-r--r--miasm/jitter/vm_mngr_py.c2
3 files changed, 4 insertions, 4 deletions
diff --git a/miasm/jitter/vm_mngr.c b/miasm/jitter/vm_mngr.c
index d0e49213..5e20670a 100644
--- a/miasm/jitter/vm_mngr.c
+++ b/miasm/jitter/vm_mngr.c
@@ -661,7 +661,7 @@ int is_mapped(vm_mngr_t* vm_mngr, uint64_t addr, size_t size)
        return 1;
 }
 
-struct memory_page_node * create_memory_page_node(uint64_t ad, unsigned int size, unsigned int access, const char *name)
+struct memory_page_node * create_memory_page_node(uint64_t ad, size_t size, unsigned int access, const char *name)
 {
 	struct memory_page_node * mpn;
 	void* ad_hp;
@@ -674,7 +674,7 @@ struct memory_page_node * create_memory_page_node(uint64_t ad, unsigned int size
 	ad_hp = malloc(size);
 	if (!ad_hp){
 		free(mpn);
-		fprintf(stderr, "Error: cannot alloc %d\n", size);
+		fprintf(stderr, "Error: cannot alloc %zu\n", size);
 		return NULL;
 	}
 	mpn->name = malloc(strlen(name) + 1);
diff --git a/miasm/jitter/vm_mngr.h b/miasm/jitter/vm_mngr.h
index 946d3b48..2bbf2c57 100644
--- a/miasm/jitter/vm_mngr.h
+++ b/miasm/jitter/vm_mngr.h
@@ -230,7 +230,7 @@ void hexdump(char* m, unsigned int l);
 struct code_bloc_node * create_code_bloc_node(uint64_t ad_start, uint64_t ad_stop);
 void add_code_bloc(vm_mngr_t* vm_mngr, struct code_bloc_node* cbp);
 
-struct memory_page_node * create_memory_page_node(uint64_t ad, unsigned int size, unsigned int access, const char *name);//memory_page* mp);
+struct memory_page_node * create_memory_page_node(uint64_t ad, size_t size, unsigned int access, const char *name);//memory_page* mp);
 void init_memory_page_pool(vm_mngr_t* vm_mngr);
 void init_code_bloc_pool(vm_mngr_t* vm_mngr);
 void reset_memory_page_pool(vm_mngr_t* vm_mngr);
diff --git a/miasm/jitter/vm_mngr_py.c b/miasm/jitter/vm_mngr_py.c
index 8bee0586..dd1bd9b1 100644
--- a/miasm/jitter/vm_mngr_py.c
+++ b/miasm/jitter/vm_mngr_py.c
@@ -106,7 +106,7 @@ PyObject* vm_add_memory_page(VmMngr* self, PyObject* args)
 	} else {
 		PyGetStr(name_ptr, name);
 	}
-	mpn = create_memory_page_node(page_addr, (unsigned int)buf_size, (unsigned int)page_access, name_ptr);
+	mpn = create_memory_page_node(page_addr, (size_t)buf_size, (unsigned int)page_access, name_ptr);
 	if (mpn == NULL)
 		RAISE(PyExc_TypeError,"cannot create page");
 	if (is_mpn_in_tab(&self->vm_mngr, mpn)) {