about summary refs log tree commit diff stats
path: root/miasm/jitter/arch/JitCore_mips32.c
diff options
context:
space:
mode:
Diffstat (limited to 'miasm/jitter/arch/JitCore_mips32.c')
-rw-r--r--miasm/jitter/arch/JitCore_mips32.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/miasm/jitter/arch/JitCore_mips32.c b/miasm/jitter/arch/JitCore_mips32.c
index 9bb3ab99..e8f95e5f 100644
--- a/miasm/jitter/arch/JitCore_mips32.c
+++ b/miasm/jitter/arch/JitCore_mips32.c
@@ -211,7 +211,7 @@ PyObject* cpu_get_exception(JitCpu* self, PyObject* args)
 
 
 
-void check_automod(JitCpu* jitcpu, uint64_t addr, uint64_t size)
+void check_automod(JitCpu* jitcpu, uint64_t addr, size_t size)
 {
 	PyObject *result;
 
@@ -255,7 +255,7 @@ PyObject* vm_set_mem(JitCpu *self, PyObject* args)
        Py_ssize_t py_length;
 
        char * buffer;
-       uint64_t size;
+       Py_ssize_t pysize;
        uint64_t addr;
        int ret;
 
@@ -264,16 +264,20 @@ PyObject* vm_set_mem(JitCpu *self, PyObject* args)
 
        PyGetInt_uint64_t(py_addr, addr);
 
-       if(!PyBytes_Check(py_buffer))
+       if (!PyBytes_Check(py_buffer))
 	       RAISE(PyExc_TypeError,"arg must be bytes");
 
-       size = PyBytes_Size(py_buffer);
+       pysize = PyBytes_Size(py_buffer);
+       if (pysize < 0) {
+	       RAISE(PyExc_TypeError,"Python error");
+       }
+
        PyBytes_AsStringAndSize(py_buffer, &buffer, &py_length);
 
-       ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, size);
+       ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, pysize);
        if (ret < 0)
 	       RAISE(PyExc_TypeError,"arg must be str");
-       check_automod(self, addr, size*8);
+       check_automod(self, addr, (size_t)pysize);
 
        Py_INCREF(Py_None);
        return Py_None;