[Forensics-changes] [yara] 107/415: Fixed some problems with yara-python under Python 3.x
Hilko Bengen
bengen at moszumanska.debian.org
Thu Apr 3 05:42:51 UTC 2014
This is an automated email from the git hooks/post-receive script.
bengen pushed a commit to branch debian
in repository yara.
commit be5126539f1a7b329de87a6d5c4859385767c62d
Author: Victor M. Alvarez <plusvic at gmail.com>
Date: Tue Aug 2 16:15:44 2011 +0000
Fixed some problems with yara-python under Python 3.x
---
yara-python/yara-python.c | 29 +++++++++++++++++------------
1 file changed, 17 insertions(+), 12 deletions(-)
diff --git a/yara-python/yara-python.c b/yara-python/yara-python.c
index fb0ac39..6ff0ae9 100644
--- a/yara-python/yara-python.c
+++ b/yara-python/yara-python.c
@@ -23,7 +23,6 @@ GNU General Public License for more details.
#include "bytesobject.h"
#elif PY_VERSION_HEX < 0x02060000
#define PyBytes_AsString PyString_AsString
-#define PyBytes_FromString PyString_FromString
#define PyBytes_Check PyString_Check
#endif
@@ -39,6 +38,12 @@ typedef int Py_ssize_t;
#define PyVarObject_HEAD_INIT(type, size) PyObject_HEAD_INIT(type) size,
#endif
+#if PY_MAJOR_VERSION >= 3
+#define PY_STRING(x) PyUnicode_FromString(x);
+#else
+#define PY_STRING(x) PyString_FromString(x);
+#endif
+
/* Module globals */
static PyObject *YaraError = NULL;
@@ -142,8 +147,8 @@ static PyObject * Match_NEW(const char* rule, const char* ns, PyObject* tags, Py
if (object != NULL)
{
- object->rule = PyBytes_FromString(rule);
- object->ns = PyBytes_FromString(ns);
+ object->rule = PY_STRING(rule);
+ object->ns = PY_STRING(ns);
object->tags = tags;
object->meta = meta;
object->strings = strings;
@@ -419,7 +424,7 @@ int yara_callback(RULE* rule, void* data)
PyObject* callback = ((CALLBACK_DATA*) data)->callback;
PyObject* callback_result;
- long result = CALLBACK_CONTINUE;
+ int result = CALLBACK_CONTINUE;
if (!(rule->flags & RULE_FLAGS_MATCH) && callback == NULL)
return CALLBACK_CONTINUE;
@@ -441,7 +446,7 @@ int yara_callback(RULE* rule, void* data)
while(tag != NULL)
{
- object = PyBytes_FromString(tag->identifier);
+ object = PY_STRING(tag->identifier);
PyList_Append(tag_list, object);
Py_DECREF(object);
@@ -462,10 +467,10 @@ int yara_callback(RULE* rule, void* data)
}
else
{
- object = PyBytes_FromString(meta->string);
+ object = PY_STRING(meta->string);
}
- PyDict_SetItemString( meta_list, meta->identifier, object);
+ PyDict_SetItemString(meta_list, meta->identifier, object);
Py_DECREF(object);
meta = meta->next;
@@ -481,10 +486,10 @@ int yara_callback(RULE* rule, void* data)
while (m != NULL)
{
- object = Py_BuildValue("(i,s,s#)", m->offset, string->identifier, (char*) m->data, m->length);
+ object = Py_BuildValue("(i,s,O)", m->offset, string->identifier, PyBytes_FromStringAndSize((char*) m->data, m->length));
PyList_Append(string_list, object);
Py_DECREF(object);
-
+
m = m->next;
}
}
@@ -523,11 +528,11 @@ int yara_callback(RULE* rule, void* data)
PyDict_SetItemString(callback_dict, "matches", object);
Py_DECREF(object);
- object = PyBytes_FromString(rule->identifier);
+ object = PY_STRING(rule->identifier);
PyDict_SetItemString(callback_dict, "rule", object);
Py_DECREF(object);
- object = PyBytes_FromString(rule->ns->name);
+ object = PY_STRING(rule->ns->name);
PyDict_SetItemString(callback_dict, "namespace", object);
Py_DECREF(object);
@@ -539,7 +544,7 @@ int yara_callback(RULE* rule, void* data)
if (PyLong_Check(callback_result))
{
- result = PyLong_AsLong(callback_result);
+ result = (int) PyLong_AsLong(callback_result);
}
Py_DECREF(callback_dict);
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/forensics/yara.git
More information about the forensics-changes
mailing list