From cd6b1657ed58ddbb0e5d7f13c1428b19310b90bd Mon Sep 17 00:00:00 2001 From: Cyrille Bagard Date: Tue, 18 Feb 2020 22:15:26 +0100 Subject: Parsed Python bytes-like objects arguments with care. --- plugins/pychrysalide/analysis/contents/memory.c | 7 ++++++- plugins/yaml/python/reader.c | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/plugins/pychrysalide/analysis/contents/memory.c b/plugins/pychrysalide/analysis/contents/memory.c index 02d5862..8926300 100644 --- a/plugins/pychrysalide/analysis/contents/memory.c +++ b/plugins/pychrysalide/analysis/contents/memory.c @@ -59,7 +59,7 @@ static PyObject *py_memory_content_new(PyTypeObject *type, PyObject *args, PyObj { PyObject *result; /* Instance à retourner */ const char *data; /* Tampon interne de Python */ - Py_ssize_t length; /* Taille utilisé de ce tampon */ + int length; /* Taille utilisé de ce tampon */ int ret; /* Bilan de lecture des args. */ GBinContent *content; /* Version GLib du contenu */ @@ -74,6 +74,11 @@ static PyObject *py_memory_content_new(PyTypeObject *type, PyObject *args, PyObj "Where data is provided as string or read-only bytes-like object." \ " The string may contain embedded null bytes." + /** + * La taille doit être de type 'int' et non 'Py_ssize_t', sinon les 32 bits + * de poids fort ne sont pas initialisés ! + */ + ret = PyArg_ParseTuple(args, "s#", &data, &length); if (!ret) return NULL; diff --git a/plugins/yaml/python/reader.c b/plugins/yaml/python/reader.c index 809ece2..a69e54f 100644 --- a/plugins/yaml/python/reader.c +++ b/plugins/yaml/python/reader.c @@ -84,6 +84,11 @@ static PyObject *py_yaml_reader_new_from_content(PyObject *self, PyObject *args) "Load a Yaml content." \ ) + /** + * La taille doit être de type 'int' et non 'Py_ssize_t', sinon les 32 bits + * de poids fort ne sont pas initialisés ! + */ + ret = PyArg_ParseTuple(args, "s#", &content, &length); if (!ret) return NULL; -- cgit v0.11.2-87-g4458