diff options
| author | Aymeric Vincent <aymeric.vincent@cea.fr> | 2015-11-23 16:57:54 +0100 |
|---|---|---|
| committer | Aymeric Vincent <aymeric.vincent@cea.fr> | 2015-11-23 16:57:54 +0100 |
| commit | bdcd9113a9c1e4299ff534555e5283e21121ce29 (patch) | |
| tree | 5a097a2f6b279e67fa91390f0366d56d0b2fff26 /miasm2/jitter/Jitllvm.c | |
| parent | 5690eb1551b3719f8fba61a2553e0720dd46667d (diff) | |
| download | miasm-bdcd9113a9c1e4299ff534555e5283e21121ce29.tar.gz miasm-bdcd9113a9c1e4299ff534555e5283e21121ce29.zip | |
When parsing a 64 bit integer, make sure we have enough room to store it.
Avoids crashes on 32 bit host architectures.
Diffstat (limited to 'miasm2/jitter/Jitllvm.c')
| -rw-r--r-- | miasm2/jitter/Jitllvm.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/miasm2/jitter/Jitllvm.c b/miasm2/jitter/Jitllvm.c index ab077b05..6622e615 100644 --- a/miasm2/jitter/Jitllvm.c +++ b/miasm2/jitter/Jitllvm.c @@ -6,15 +6,17 @@ PyObject* llvm_exec_bloc(PyObject* self, PyObject* args) { + uint64_t func_addr; uint64_t (*func)(void*, void*); uint64_t vm; uint64_t cpu; uint64_t ret; - if (!PyArg_ParseTuple(args, "KKK", &func, &cpu, &vm)) + if (!PyArg_ParseTuple(args, "KKK", &func_addr, &cpu, &vm)) return NULL; - ret = func((void*)cpu, (void*)vm); - return PyLong_FromUnsignedLongLong( (uint64_t)ret); + func = (void *) (intptr_t) func_addr; + ret = func((void*)(intptr_t) cpu, (void*)(intptr_t) vm); + return PyLong_FromUnsignedLongLong(ret); } |