Commit a3c5e1f2 by plusvic

Refactor object-related code

parent 14efc8fb
......@@ -409,7 +409,6 @@ PyObject* convert_dictionary_to_python(
PyObject* convert_object_to_python(
YR_OBJECT* object)
{
SIZED_STRING* sized_string;
PyObject* result = NULL;
if (object == NULL)
......@@ -418,24 +417,23 @@ PyObject* convert_object_to_python(
switch(object->type)
{
case OBJECT_TYPE_INTEGER:
if (((YR_OBJECT_INTEGER*) object)->value != UNDEFINED)
result = Py_BuildValue(
"i", ((YR_OBJECT_INTEGER*) object)->value);
if (object->value.i != UNDEFINED)
result = Py_BuildValue("i", object->value.i);
break;
case OBJECT_TYPE_STRING:
sized_string = ((YR_OBJECT_STRING*) object)->value;
if (sized_string != NULL)
if (object->value.ss != NULL)
result = PyBytes_FromStringAndSize(
sized_string->c_string, sized_string->length);
object->value.ss->c_string,
object->value.ss->length);
break;
case OBJECT_TYPE_STRUCTURE:
result = convert_structure_to_python((YR_OBJECT_STRUCTURE*) object);
result = convert_structure_to_python(object_as_structure(object));
break;
case OBJECT_TYPE_ARRAY:
result = convert_array_to_python((YR_OBJECT_ARRAY*) object);
result = convert_array_to_python(object_as_array(object));
break;
case OBJECT_TYPE_FUNCTION:
......@@ -443,12 +441,12 @@ PyObject* convert_object_to_python(
break;
case OBJECT_TYPE_DICTIONARY:
result = convert_dictionary_to_python((YR_OBJECT_DICTIONARY*) object);
result = convert_dictionary_to_python(object_as_dictionary(object));
break;
case OBJECT_TYPE_FLOAT:
if (!isnan(((YR_OBJECT_DOUBLE*) object)->value))
result = Py_BuildValue("d", ((YR_OBJECT_DOUBLE*) object)->value);
if (!isnan(object->value.d))
result = Py_BuildValue("d", object->value.d);
break;
default:
......@@ -637,12 +635,12 @@ int yara_callback(
gil_state = PyGILState_Ensure();
module_info_dict = convert_structure_to_python(
(YR_OBJECT_STRUCTURE*) message_data);
object_as_structure(message_data));
if (module_info_dict == NULL)
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);
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