summaryrefslogtreecommitdiff
path: root/plugins/pychrysalide/analysis/content.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2020-01-08 23:42:44 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2020-01-08 23:42:44 (GMT)
commit43f249445c9c69b9eabeea8be08b6b55a474f1fc (patch)
treed2ef7c1c464c13fb3fbd8c44b233b83a12df09a1 /plugins/pychrysalide/analysis/content.c
parent70dce9d37e6b38c5bee7cfe175dcebd021e3a148 (diff)
Fixed the link between native and Python locations.
Diffstat (limited to 'plugins/pychrysalide/analysis/content.c')
-rw-r--r--plugins/pychrysalide/analysis/content.c45
1 files changed, 35 insertions, 10 deletions
diff --git a/plugins/pychrysalide/analysis/content.c b/plugins/pychrysalide/analysis/content.c
index 93292fb..8934c88 100644
--- a/plugins/pychrysalide/analysis/content.c
+++ b/plugins/pychrysalide/analysis/content.c
@@ -155,7 +155,7 @@ static PyObject *py_binary_content_describe(PyObject *self, PyObject *args)
static PyObject *py_binary_content_read_raw(PyObject *self, PyObject *args)
{
PyObject *result; /* Instance à retourner */
- vmpa2t addr; /* Position interne associée */
+ vmpa2t *addr; /* Position interne associée */
unsigned long long length; /* Quantité de données à lire */
int ret; /* Bilan de lecture des args. */
GBinContent *content; /* Version GLib du format */
@@ -173,15 +173,20 @@ static PyObject *py_binary_content_read_raw(PyObject *self, PyObject *args)
content = G_BIN_CONTENT(pygobject_get(self));
- val = g_binary_content_get_raw_access(content, &addr, length);
+ val = g_binary_content_get_raw_access(content, addr, length);
if (val == NULL)
{
+ clean_vmpa_arg(addr);
+
PyErr_SetString(PyExc_Exception, _("Invalid read access."));
return NULL;
+
}
result = PyBytes_FromStringAndSize((char *)val, length);
+ clean_vmpa_arg(addr);
+
return result;
}
@@ -203,7 +208,7 @@ static PyObject *py_binary_content_read_raw(PyObject *self, PyObject *args)
static PyObject *py_binary_content_read_u8(PyObject *self, PyObject *args)
{
PyObject *result; /* Instance à retourner */
- vmpa2t addr; /* Position interne associée */
+ vmpa2t *addr; /* Position interne associée */
int ret; /* Bilan de lecture des args. */
GBinContent *content; /* Version GLib du format */
uint8_t val; /* Valeur lue à faire suivre */
@@ -221,15 +226,20 @@ static PyObject *py_binary_content_read_u8(PyObject *self, PyObject *args)
content = G_BIN_CONTENT(pygobject_get(self));
- status = g_binary_content_read_u8(content, &addr, &val);
+ status = g_binary_content_read_u8(content, addr, &val);
if (!status)
{
+ clean_vmpa_arg(addr);
+
PyErr_SetString(PyExc_Exception, _("Invalid read access."));
return NULL;
+
}
result = PyLong_FromUnsignedLong(val);
+ clean_vmpa_arg(addr);
+
return result;
}
@@ -251,7 +261,7 @@ static PyObject *py_binary_content_read_u8(PyObject *self, PyObject *args)
static PyObject *py_binary_content_read_u16(PyObject *self, PyObject *args)
{
PyObject *result; /* Instance à retourner */
- vmpa2t addr; /* Position interne associée */
+ vmpa2t *addr; /* Position interne associée */
unsigned long endianness; /* Boutisme de la lecture */
int ret; /* Bilan de lecture des args. */
GBinContent *content; /* Version GLib du format */
@@ -273,15 +283,20 @@ static PyObject *py_binary_content_read_u16(PyObject *self, PyObject *args)
content = G_BIN_CONTENT(pygobject_get(self));
- status = g_binary_content_read_u16(content, &addr, endianness, &val);
+ status = g_binary_content_read_u16(content, addr, endianness, &val);
if (!status)
{
+ clean_vmpa_arg(addr);
+
PyErr_SetString(PyExc_Exception, _("Invalid read access."));
return NULL;
+
}
result = PyLong_FromUnsignedLong(val);
+ clean_vmpa_arg(addr);
+
return result;
}
@@ -303,7 +318,7 @@ static PyObject *py_binary_content_read_u16(PyObject *self, PyObject *args)
static PyObject *py_binary_content_read_u32(PyObject *self, PyObject *args)
{
PyObject *result; /* Instance à retourner */
- vmpa2t addr; /* Position interne associée */
+ vmpa2t *addr; /* Position interne associée */
unsigned long endianness; /* Boutisme de la lecture */
int ret; /* Bilan de lecture des args. */
GBinContent *content; /* Version GLib du format */
@@ -325,15 +340,20 @@ static PyObject *py_binary_content_read_u32(PyObject *self, PyObject *args)
content = G_BIN_CONTENT(pygobject_get(self));
- status = g_binary_content_read_u32(content, &addr, endianness, &val);
+ status = g_binary_content_read_u32(content, addr, endianness, &val);
if (!status)
{
+ clean_vmpa_arg(addr);
+
PyErr_SetString(PyExc_Exception, _("Invalid read access."));
return NULL;
+
}
result = PyLong_FromUnsignedLong(val);
+ clean_vmpa_arg(addr);
+
return result;
}
@@ -354,7 +374,7 @@ static PyObject *py_binary_content_read_u32(PyObject *self, PyObject *args)
static PyObject *py_binary_content_read_u64(PyObject *self, PyObject *args)
{
PyObject *result; /* Instance à retourner */
- vmpa2t addr; /* Position interne associée */
+ vmpa2t *addr; /* Position interne associée */
unsigned long endianness; /* Boutisme de la lecture */
int ret; /* Bilan de lecture des args. */
GBinContent *content; /* Version GLib du format */
@@ -376,15 +396,20 @@ static PyObject *py_binary_content_read_u64(PyObject *self, PyObject *args)
content = G_BIN_CONTENT(pygobject_get(self));
- status = g_binary_content_read_u64(content, &addr, endianness, &val);
+ status = g_binary_content_read_u64(content, addr, endianness, &val);
if (!status)
{
+ clean_vmpa_arg(addr);
+
PyErr_SetString(PyExc_Exception, _("Invalid read access."));
return NULL;
+
}
result = PyLong_FromUnsignedLongLong(val);
+ clean_vmpa_arg(addr);
+
return result;
}