From: saerome kim Date: Fri, 1 Feb 2019 04:57:16 +0000 (+0900) Subject: Fixed coverity issue : 85247 X-Git-Tag: submit/tizen/20190201.052844^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cef7275f6e40a1eeb321ceda62f37c31b7e082de;p=platform%2Fcore%2Fapi%2Fzigbee.git Fixed coverity issue : 85247 Change-Id: I980a5009c5d7f4cc11d972c57a6a4e1b5b3cc513 Signed-off-by: saerome kim --- diff --git a/src/zbl-dbus.c b/src/zbl-dbus.c index afb2831..07262df 100644 --- a/src/zbl-dbus.c +++ b/src/zbl-dbus.c @@ -542,6 +542,29 @@ static void _zbl_remove_global_req(zb_zigbee_h handle, unsigned char ep, } #endif /* ZB_FEATURE_GLOBAL_RSP_SYNC */ +static void __records_value_free(struct attribute_report_s **records, + int records_len) +{ + RET_IF(NULL == records); + + for (int i = 0; i < records_len; i++) { + free(records[i]->value); + records[i]->value = NULL; + } +} + +static void __records_free(struct attribute_report_s **records, int count) +{ + RET_IF(NULL == records); + + for (int i = 0; i < count; i++) { + free(records[i]); + records[i] = NULL; + } + free(records); + records = NULL; +} + static void _zbl_signal_handler(GDBusConnection *connection, const gchar *sender_name, const gchar *object_path, const gchar *interface_name, const gchar *signal_name, GVariant *parameters, gpointer user_data) @@ -791,12 +814,8 @@ static void _zbl_signal_handler(GDBusConnection *connection, for (j = 0; j < count; j++) { records[j] = calloc(1, sizeof(struct attribute_report_s)); if (NULL == records[j]) { - for (i = 0; i < j; i++) { - free(records[i]); - records[i] = NULL; - } - free(records); - records = NULL; + __records_value_free(records, j); + __records_free(records, count); g_variant_iter_free(attr_iter); g_variant_iter_free(dataType_iter); @@ -833,16 +852,8 @@ static void _zbl_signal_handler(GDBusConnection *connection, data_size = value + 1; records[j]->value = calloc(data_size, sizeof(unsigned char)); if (NULL == records[j]->value) { - for (i = 0; i < j; i++) { - free(records[i]->value); - records[i]->value = NULL; - } - for (i = 0; i < count; i++) { - free(records[i]); - records[i] = NULL; - } - free(records); - records = NULL; + __records_value_free(records, j); + __records_free(records, count); ERR("calloc() Fail(%d)", errno); goto EXIT_EVENT_HANDLER; @@ -861,11 +872,13 @@ static void _zbl_signal_handler(GDBusConnection *connection, case ZB_ZCL_LONG_OCTET_STRING: case ZB_ZCL_LONG_CHARACTER_STRING: if (FALSE == g_variant_iter_loop(data_iter, "(y)", &value)) { + __records_free(records, count); ERR("No Data"); goto EXIT_EVENT_HANDLER; } dSize[0] = value; if (FALSE == g_variant_iter_loop(data_iter, "(y)", &value)) { + __records_free(records, count); ERR("No Data"); goto EXIT_EVENT_HANDLER; } @@ -875,16 +888,8 @@ static void _zbl_signal_handler(GDBusConnection *connection, data_size += 2; records[j]->value = calloc(data_size, sizeof(unsigned char)); if (NULL == records[j]->value) { - for (i = 0; i < j; i++) { - free(records[i]->value); - records[i]->value = NULL; - } - for (i = 0; i < count; i++) { - free(records[i]); - records[i] = NULL; - } - free(records); - records = NULL; + __records_value_free(records, j); + __records_free(records, count); ERR("calloc() Fail(%d)", errno); goto EXIT_EVENT_HANDLER; @@ -896,6 +901,8 @@ static void _zbl_signal_handler(GDBusConnection *connection, for (i = dsizeIndex; i < data_size - 2; i++) { if (FALSE == g_variant_iter_loop(data_iter, "(y)", &value)) { + __records_value_free(records, j); + __records_free(records, count); ERR("No Data"); goto EXIT_EVENT_HANDLER; } @@ -914,32 +921,16 @@ static void _zbl_signal_handler(GDBusConnection *connection, default: data_size = zb_zcl_get_data_size(records[j]->type); if (data_size < 0) { - for (i = 0; i < j; i++) { - free(records[i]->value); - records[i]->value = NULL; - } - for (i = 0; i < count; i++) { - free(records[i]); - records[i] = NULL; - } - free(records); - records = NULL; + __records_value_free(records, j); + __records_free(records, count); ERR("zb_zcl_get_data_size() Fail(%d)", data_size); goto EXIT_EVENT_HANDLER; } records[j]->value = calloc(data_size, sizeof(unsigned char)); if (NULL == records[j]->value) { - for (i = 0; i < j; i++) { - free(records[i]->value); - records[i]->value = NULL; - } - for (i = 0; i < count; i++) { - free(records[i]); - records[i] = NULL; - } - free(records); - records = NULL; + __records_value_free(records, j); + __records_free(records, count); ERR("calloc() Fail(%d)", errno); goto EXIT_EVENT_HANDLER; @@ -962,19 +953,8 @@ static void _zbl_signal_handler(GDBusConnection *connection, ev->data.global_attr_report = calloc(1, sizeof(zb_event_global_attr_report_s)); if (NULL == ev->data.global_attr_report) { - ERR("Failed to memory allocation !"); - for (j = 0; j < count; j++) { - free(records[j]->value); - records[j]->value = NULL; - if (records[j]) { - free(records[j]); - records[j] = NULL; - } - } - if (records) { - free(records); - records = NULL; - } + __records_value_free(records, count); + __records_free(records, count); goto EXIT_EVENT_HANDLER; } @@ -983,20 +963,10 @@ static void _zbl_signal_handler(GDBusConnection *connection, container->event_handler(addr16, NULL, ZB_ZCL_GLOBAL_ATTRIBUTE_REPORT_EVENT, ev, container->user_data); - for (j = 0; j < count; j++) { - if (records[j]->value) { - free(records[j]->value); - records[j]->value = NULL; - } - if (records[j]) { - free(records[j]); - records[j] = NULL; - } - } - if (records) { - free(records); - records = NULL; - } + + __records_value_free(records, count); + __records_free(records, count); + if (ev->data.global_attr_report) { free(ev->data.global_attr_report); ev->data.global_attr_report = NULL;