From: Enlightenment S. <no-...@en...> - 2012-11-16 13:07:43
|
Log: edbus: Fix segfault in edbus_message_to_eina_value() when message have no args Patch by: Jos?\195?\169 Roberto de Souza <zeh...@pr...> Author: lucas Date: 2012-11-16 05:07:32 -0800 (Fri, 16 Nov 2012) New Revision: 79385 Trac: http://trac.enlightenment.org/e/changeset/79385 Modified: trunk/edbus/src/lib/edbus_message_to_eina_value.c Modified: trunk/edbus/src/lib/edbus_message_to_eina_value.c =================================================================== --- trunk/edbus/src/lib/edbus_message_to_eina_value.c 2012-11-16 13:07:26 UTC (rev 79384) +++ trunk/edbus/src/lib/edbus_message_to_eina_value.c 2012-11-16 13:07:32 UTC (rev 79385) @@ -261,7 +261,7 @@ _message_iter_struct_to_eina_value(EDBus_Message_Iter *iter) { int type; - Eina_Value *value_st; + Eina_Value *value_st = NULL; Eina_Array *st_members = eina_array_new(1); unsigned int offset = 0, z; static char name[7];//arg000 + \0 @@ -394,6 +394,12 @@ z++; } + if (!z) + { + free(st_desc); + goto end; + } + members = malloc(eina_array_count(st_members) * sizeof(Eina_Value_Struct_Member)); for (z = 0; z < eina_array_count(st_members); z++) { @@ -409,7 +415,6 @@ st_desc->base.member_count = eina_array_count(st_members); st_desc->base.size = offset; value_st = eina_value_struct_new((Eina_Value_Struct_Desc *)st_desc); - eina_array_free(st_members); //filling with data for (z = 0; z < eina_array_count(st_values); z++) @@ -419,6 +424,9 @@ eina_value_struct_value_set(value_st, name, v); eina_value_free(v); } + +end: + eina_array_free(st_members); eina_array_free(st_values); DBG("end struct"); return value_st; |