about summary refs log tree commit diff stats
path: root/miasm2/jitter/vm_mngr_py.c
diff options
context:
space:
mode:
authorPierre Graux <pierre.graux@ensimag.grenoble-inp.fr>2016-08-31 14:09:40 +0200
committerPierre Graux <pierre.graux@ensimag.grenoble-inp.fr>2016-09-01 12:28:35 +0200
commit4c019ff2a7d53e3b8b1d74f6bdae6a7523d7871b (patch)
treecedcef86bdc3c18b100923aa6a82201e2f9f8219 /miasm2/jitter/vm_mngr_py.c
parent6d518de0330d3ffecffb138fd1d94b258052e0d0 (diff)
downloadmiasm-4c019ff2a7d53e3b8b1d74f6bdae6a7523d7871b.tar.gz
miasm-4c019ff2a7d53e3b8b1d74f6bdae6a7523d7871b.zip
Add a way to retrieve memory access right
Diffstat (limited to 'miasm2/jitter/vm_mngr_py.c')
-rw-r--r--miasm2/jitter/vm_mngr_py.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/miasm2/jitter/vm_mngr_py.c b/miasm2/jitter/vm_mngr_py.c
index 5aece270..891d4459 100644
--- a/miasm2/jitter/vm_mngr_py.c
+++ b/miasm2/jitter/vm_mngr_py.c
@@ -195,6 +195,25 @@ PyObject* vm_set_mem(VmMngr* self, PyObject* args)
 
 
 
+PyObject* vm_get_mem_access(VmMngr* self, PyObject* args)
+{
+        PyObject *py_addr;
+        uint64_t page_addr;
+        struct memory_page_node * mpn;
+
+        if (!PyArg_ParseTuple(args, "O", &py_addr))
+                return NULL;
+
+        PyGetInt(py_addr, page_addr);
+
+        mpn = get_memory_page_from_address(&self->vm_mngr, page_addr, 1);
+        if (!mpn){
+                PyErr_SetString(PyExc_RuntimeError, "cannot find address");
+                return 0;
+        }
+      
+        return PyLong_FromUnsignedLongLong((uint64_t)mpn->access);
+}
 
 PyObject* vm_get_mem(VmMngr* self, PyObject* args)
 {
@@ -606,6 +625,8 @@ static PyMethodDef VmMngr_methods[] = {
 	 "X"},
 	{"add_code_bloc",(PyCFunction)vm_add_code_bloc, METH_VARARGS,
 	 "X"},
+	{"get_mem_access", (PyCFunction)vm_get_mem_access, METH_VARARGS,
+	 "X"},
 	{"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS,
 	 "X"},
 	{"add_memory_page",(PyCFunction)vm_add_memory_page, METH_VARARGS,