Fixed crash issue
authorsaerome.kim <saerome.kim@samsung.com>
Tue, 1 Oct 2019 22:49:07 +0000 (07:49 +0900)
committersaerome.kim <saerome.kim@samsung.com>
Tue, 1 Oct 2019 23:09:59 +0000 (08:09 +0900)
A crash occurs in a harsh environment because the memory is broken.
To prevent incorrect access, make variables allocated to heap as null after
variable free().

Change-Id: Iee9c4df9af93354ff96e179765d22c39aa2df685
Signed-off-by: Abhay Agarwal <ay.agarwal@samsung.com>
packaging/ua-manager.spec
ua-daemon/src/ua-manager-core.c

index 9d74ef7..f120bfa 100644 (file)
@@ -1,6 +1,6 @@
 Name:       ua-manager
 Summary:    User awareness manager
-Version:    0.10.8
+Version:    0.10.9
 Release:    1
 License:    Apache-2.0
 Source0:    %{name}-%{version}.tar.gz
index c27b2cf..2032da7 100644 (file)
@@ -104,6 +104,7 @@ static void __free_address_info(gpointer data)
 
        g_free(addr->address);
        g_free(addr);
+       addr = NULL;
        FUNC_EXIT;
 }
 
@@ -116,6 +117,7 @@ static void __free_dev_tech_info(gpointer data)
 
        g_slist_free_full(tech_info->addresses, __free_address_info);
        g_free(tech_info);
+       tech_info = NULL;
        FUNC_EXIT;
 }
 
@@ -133,6 +135,7 @@ static void __free_user_device(gpointer data)
        g_free(device->device_id);
        g_slist_free_full(device->tech_list, __free_dev_tech_info);
        g_free(device);
+       device = NULL;
        FUNC_EXIT;
 }
 
@@ -2389,6 +2392,8 @@ void __send_sensor_absence_event(uam_sensor_info_s *sensor_info, unsigned int se
 
        UAM_INFO("sensor 0x[%8.8X]", sensor);
 
+       ret_if(NULL == sensor_info);
+
        if (UAM_SENSOR_BITMASK_LIGHT != sensor) {
                _uam_manager_send_event(NULL, UAM_EVENT_ABSENCE_DETECTED,
                        g_variant_new("(uxiidddd)", sensor, sensor_info->timestamp,
@@ -2399,7 +2404,6 @@ void __send_sensor_absence_event(uam_sensor_info_s *sensor_info, unsigned int se
                return;
        }
 
-       ret_if(NULL == sensor_info);
        // service specific light detection threshold
        for (l = services; NULL != l; l = g_slist_next(l)) {
                uam_db_service_info_t *svc = l->data;