Fix coverity issue 90/152990/1
authorsaerome kim <saerome.kim@samsung.com>
Wed, 27 Sep 2017 12:34:36 +0000 (21:34 +0900)
committersaerome kim <saerome.kim@samsung.com>
Wed, 27 Sep 2017 12:34:36 +0000 (21:34 +0900)
- Fix resource leak issues
- Fix momory corruption issue

Change-Id: Ie5381307a7f87503649523179a527f99848eec88
Signed-off-by: saerome kim <saerome.kim@samsung.com>
lib/zbl_dbus.c

index 8ac53e8..2dce7d1 100644 (file)
@@ -708,7 +708,7 @@ static void _zbl_signal_handler(GDBusConnection *connection,
                unsigned short attrData;
                unsigned short cluster_id;
                unsigned char dataType;
-               unsigned short data_size;
+               int data_size;
                int dsizeIndex = 0;
                char dSize[3] = {'\0', '\0'};
                int i = 0, j = 0, records_len;
@@ -1887,8 +1887,10 @@ MGMT_NWK_BIND_REQ_OUT:
                                        &records[i]->rx_on_when_idle, &records[i]->relationship,
                                        &records[i]->permit_joining, &records[i]->depth,
                                        &records[i]->lqi);
-                       RETM_IF(NULL == mac_iter, "Invalid parameter !");
-                       RETM_IF(NULL == mac_iter1, "Invalid parameter !");
+                       if (NULL == mac_iter || NULL == mac_iter1) {
+                               ERR("Invalid parameter !");
+                               goto MGMT_LQI_REQ_OUT;
+                       }
 
                        for (j = 0; j < 8; j++) {
                                g_variant_iter_loop(mac_iter, "y", &value);
@@ -1900,14 +1902,15 @@ MGMT_NWK_BIND_REQ_OUT:
                        g_variant_iter_free(mac_iter1);
 
                        DBG("ext PAN ID = %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X",
-                       records[i]->extended_pan_id[0], records[i]->extended_pan_id[1],
-                       records[i]->extended_pan_id[2], records[i]->extended_pan_id[3],
-                       records[i]->extended_pan_id[4], records[i]->extended_pan_id[5],
-                       records[i]->extended_pan_id[6], records[i]->extended_pan_id[7]);
+                               records[i]->extended_pan_id[0], records[i]->extended_pan_id[1],
+                               records[i]->extended_pan_id[2], records[i]->extended_pan_id[3],
+                               records[i]->extended_pan_id[4], records[i]->extended_pan_id[5],
+                               records[i]->extended_pan_id[6], records[i]->extended_pan_id[7]);
 
                        DBG("IEEE address = %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X",
-                       records[i]->addr64[0], records[i]->addr64[1], records[i]->addr64[2], records[i]->addr64[3],
-                       records[i]->addr64[4], records[i]->addr64[5], records[i]->addr64[6], records[i]->addr64[7]);
+                               records[i]->addr64[0], records[i]->addr64[1], records[i]->addr64[2],
+                               records[i]->addr64[3], records[i]->addr64[4], records[i]->addr64[5],
+                               records[i]->addr64[6], records[i]->addr64[7]);
                }
                g_variant_iter_free(resp_iter);
 
@@ -1915,11 +1918,14 @@ MGMT_NWK_BIND_REQ_OUT:
                        (void **)records, container->userdata);
 
 MGMT_LQI_REQ_OUT:
-               for (i = 0; i < neighbor_table_list_count; i++) {
-                       if (records[i])
-                               free(records[i]);
+               if (records) {
+                       for (i = 0; i < neighbor_table_list_count; i++) {
+                               if (records[i])
+                                       free(records[i]);
+                       }
+                       free(records);
+                       records = NULL;
                }
-               free(records);
        }
        break;
        case ZBL_ZDO_MGMT_RTG_REQ: {
@@ -2023,11 +2029,14 @@ MGMT_NWK_RTG_REQ_OUT:
                cb(status, nwk_count, start_index, nwk_list_count, (void **)records, container->userdata);
 
 MGMT_NWK_DISC_REQ_OUT:
-               for (i = 0; i < nwk_list_count; i++) {
-                       if (records[i])
-                               free(records[i]);
+               if (records) {
+                       for (i = 0; i < nwk_list_count; i++) {
+                               if (records[i])
+                                       free(records[i]);
+                       }
+                       free(records);
+                       records = NULL;
                }
-               free(records);
        }
        break;
        case ZBL_ZDO_MGMT_PERMIT_JOIN_REQ: {
@@ -2692,16 +2701,14 @@ GLOBAL_READ_CONFIGURE_REPORTING_REQ_OUT:
                        }
                        g_variant_iter_free(grpNameiter);
                } else {
-                       group_name = calloc(1, sizeof(char));
+                       group_name = calloc(2, sizeof(char));
                        if (NULL == group_name) {
                                g_variant_iter_free(grpNameiter);
                                ERR("calloc() Fail(%d)", errno);
                                goto GROUP_VIEW_GROUP_REQ_OUT;
                        }
-                       group_name[j] = value;
-                       j++;
-                       group_name[j] = '\0';
-                       j++;
+                       group_name[j++] = value;
+                       group_name[j++] = '\0';
                }
 
                DBG("GroupName = %s", group_name);