Commit a3c5e1f2 by plusvic

Refactor object-related code

parent 14efc8fb
...@@ -409,7 +409,6 @@ PyObject* convert_dictionary_to_python( ...@@ -409,7 +409,6 @@ PyObject* convert_dictionary_to_python(
PyObject* convert_object_to_python( PyObject* convert_object_to_python(
YR_OBJECT* object) YR_OBJECT* object)
{ {
SIZED_STRING* sized_string;
PyObject* result = NULL; PyObject* result = NULL;
if (object == NULL) if (object == NULL)
...@@ -418,24 +417,23 @@ PyObject* convert_object_to_python( ...@@ -418,24 +417,23 @@ PyObject* convert_object_to_python(
switch(object->type) switch(object->type)
{ {
case OBJECT_TYPE_INTEGER: case OBJECT_TYPE_INTEGER:
if (((YR_OBJECT_INTEGER*) object)->value != UNDEFINED) if (object->value.i != UNDEFINED)
result = Py_BuildValue( result = Py_BuildValue("i", object->value.i);
"i", ((YR_OBJECT_INTEGER*) object)->value);
break; break;
case OBJECT_TYPE_STRING: case OBJECT_TYPE_STRING:
sized_string = ((YR_OBJECT_STRING*) object)->value; if (object->value.ss != NULL)
if (sized_string != NULL)
result = PyBytes_FromStringAndSize( result = PyBytes_FromStringAndSize(
sized_string->c_string, sized_string->length); object->value.ss->c_string,
object->value.ss->length);
break; break;
case OBJECT_TYPE_STRUCTURE: case OBJECT_TYPE_STRUCTURE:
result = convert_structure_to_python((YR_OBJECT_STRUCTURE*) object); result = convert_structure_to_python(object_as_structure(object));
break; break;
case OBJECT_TYPE_ARRAY: case OBJECT_TYPE_ARRAY:
result = convert_array_to_python((YR_OBJECT_ARRAY*) object); result = convert_array_to_python(object_as_array(object));
break; break;
case OBJECT_TYPE_FUNCTION: case OBJECT_TYPE_FUNCTION:
...@@ -443,12 +441,12 @@ PyObject* convert_object_to_python( ...@@ -443,12 +441,12 @@ PyObject* convert_object_to_python(
break; break;
case OBJECT_TYPE_DICTIONARY: case OBJECT_TYPE_DICTIONARY:
result = convert_dictionary_to_python((YR_OBJECT_DICTIONARY*) object); result = convert_dictionary_to_python(object_as_dictionary(object));
break; break;
case OBJECT_TYPE_FLOAT: case OBJECT_TYPE_FLOAT:
if (!isnan(((YR_OBJECT_DOUBLE*) object)->value)) if (!isnan(object->value.d))
result = Py_BuildValue("d", ((YR_OBJECT_DOUBLE*) object)->value); result = Py_BuildValue("d", object->value.d);
break; break;
default: default:
...@@ -637,12 +635,12 @@ int yara_callback( ...@@ -637,12 +635,12 @@ int yara_callback(
gil_state = PyGILState_Ensure(); gil_state = PyGILState_Ensure();
module_info_dict = convert_structure_to_python( module_info_dict = convert_structure_to_python(
(YR_OBJECT_STRUCTURE*) message_data); object_as_structure(message_data));
if (module_info_dict == NULL) if (module_info_dict == NULL)
return CALLBACK_CONTINUE; return CALLBACK_CONTINUE;
object = PY_STRING(((YR_OBJECT_STRUCTURE*) message_data)->identifier); object = PY_STRING(object_as_structure(message_data)->identifier);
PyDict_SetItemString(module_info_dict, "module", object); PyDict_SetItemString(module_info_dict, "module", object);
Py_DECREF(object); Py_DECREF(object);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment