diff options
Diffstat (limited to 'miasm/jitter/arch/JitCore_mips32.c')
| -rw-r--r-- | miasm/jitter/arch/JitCore_mips32.c | 16 |
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; |