From cd6b1657ed58ddbb0e5d7f13c1428b19310b90bd Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
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