Fixed crash when UTC with Wi-Fi dummy plugin. 38/204038/1 accepted/tizen/unified/20190419.110540 accepted/tizen/unified/20190422.231529 submit/tizen/20190418.230305 submit/tizen/20190422.122708
authorsaerome.kim <saerome.kim@samsung.com>
Thu, 18 Apr 2019 11:10:07 +0000 (20:10 +0900)
committersaerome kim <saerome.kim@samsung.com>
Thu, 18 Apr 2019 22:41:49 +0000 (07:41 +0900)
Added error code UAM_ERROR_NOT_INITIALIZED

Change-Id: I42542f5281a31a4d5f78b40e6b949cb90be4456d
Signed-off-by: saerome.kim <saerome.kim@samsung.com>
include/ua-api.h
ua-api/src/ua-common.c
ua-api/src/ua-event-handler.c
ua-api/src/ua-request-sender.c
ua-daemon/include/ua-manager-common.h
ua-daemon/src/ua-manager-request-handler.c

index 7b1245b..1f53432 100644 (file)
@@ -72,13 +72,14 @@ typedef enum {
        ERROR(UAM_ERROR_TIMEOUT, TIZEN_ERROR_TIMED_OUT) \
        ERROR(UAM_ERROR_NOW_IN_PROGRESS, TIZEN_ERROR_NOW_IN_PROGRESS) \
        ERROR(UAM_ERROR_NOT_SUPPORTED, TIZEN_ERROR_NOT_SUPPORTED) \
-       ERROR(UAM_ERROR_NOT_REGISTERED, TIZEN_ERROR_UA | 0x01) \
+       ERROR(UAM_ERROR_NOT_INITIALIZED, TIZEN_ERROR_UA | 0x01) \
        ERROR(UAM_ERROR_NOT_IN_OPERATION, TIZEN_ERROR_UA | 0x02) \
        ERROR(UAM_ERROR_ALREADY_DONE, TIZEN_ERROR_UA | 0x03) \
        ERROR(UAM_ERROR_INTERNAL, TIZEN_ERROR_UA | 0x04) \
        ERROR(UAM_ERROR_NOT_FOUND, TIZEN_ERROR_UA | 0x10) \
        ERROR(UAM_ERROR_ALREADY_REGISTERED, TIZEN_ERROR_UA | 0x11) \
        ERROR(UAM_ERROR_DB_FAILED, TIZEN_ERROR_UA | 0x12) \
+       ERROR(UAM_ERROR_NOT_REGISTERED, TIZEN_ERROR_UA | 0x13) \
 
 #define GENERATE_ERROR_ENUM(ENUM, offset) ENUM = -offset,
 #define GENERATE_ERROR_STRING(STRING, offset) #STRING,
index 65dd5be..d86197c 100644 (file)
@@ -108,6 +108,7 @@ const char *_uam_error_to_str(int error)
        int err_id = -error;
 
        UAM_DBG("arr_size: %d, err_id: %d", arr_size, err_id);
+       retv_if(0 > err_id, NULL);
        retv_if(arr_size <= err_id, NULL);
 
        return error_string[err_id];
index 9a4af61..369d25a 100644 (file)
@@ -274,7 +274,9 @@ int _uam_unregister_event_handler(void)
        retv_if(NULL == conn, UAM_ERROR_INTERNAL);
 
        g_dbus_connection_signal_unsubscribe(conn, event_handler_data->id);
+       memset(event_handler_data, 0, sizeof(uam_event_handler_data_t));
        g_free(event_handler_data);
+       event_handler_data = NULL;
 
        FUNC_EXIT;
        return UAM_ERROR_NONE;
index 940c1a8..312accf 100644 (file)
@@ -285,24 +285,27 @@ static void __uam_async_request_cb(
                        goto done;
        }
 
-       UAM_INFO("Event: %s [0x%4.4X], result= %s [0x%4.4X]",
-                       _uam_event_to_str(event), event,
-                       _uam_error_to_str(result), result);
+       UAM_INFO("result= %s [0x%4.4X]", _uam_error_to_str(result), result);
        event_data.result = result;
-       __uam_get_event_info(req_info->req_func, out_param,
-                       &event, &event_data.data);
 
-       ((uam_event_callback)req_info->cb)(
-               event, &event_data, req_info->user_data);
+       if (req_info && req_info->req_func) {
+               __uam_get_event_info(req_info->req_func, out_param,
+                               &event, &event_data.data);
+
+               ((uam_event_callback)req_info->cb)(
+                       event, &event_data, req_info->user_data);
+       }
 
 done:
-       if (out_param)
+       if (out_param) {
                g_array_free(out_param, TRUE);
+       }
 
        if (req_info) {
                pending_requests = g_slist_remove(
                                pending_requests, (void *)req_info);
                g_free(req_info);
+               req_info = NULL;
        }
        FUNC_EXIT;
 }
index 0f32d21..836e2a9 100644 (file)
@@ -93,6 +93,8 @@ GSList *_uam_manager_get_request_list(void);
 void _uam_manager_remove_req_ctxt_from_list(
                uam_request_context_t *req_info);
 
+void _uam_manager_cleanup_client(const char *name);
+
 void _uam_manager_method_return(
                GDBusMethodInvocation *invocation,
                GArray *out_param, int result);
index 5e775b1..538327c 100644 (file)
@@ -802,32 +802,14 @@ static void __uam_manager_name_owner_changed_cb(GDBusConnection *connection,
                GVariant *parameters,
                gpointer user_data)
 {
-       int count = 1;
        const char *name = NULL;
        const char *old_owner = NULL;
        const char *new_owner = NULL;
-       GSList *list;
 
        g_variant_get(parameters, "(&s&s&s)", &name, &old_owner, &new_owner);
-
        if ('\0' == *new_owner) {
-               /* Cleanup all pending request from this sender */
-               __uam_manager_cleanup_requests_from_sender(name);
-
-               g_mutex_lock(&uam_dbus_clients_mutex);
-               list = __uam_list_find_client(name);
-               if (list) {
-                       /* found bus name in our bus list */
-                       __uamd_dbus_client_cleanup((gpointer)list->data);
-                       uam_dbus_clients = g_slist_remove_link(uam_dbus_clients, list);
-                       count = g_slist_length(uam_dbus_clients);
-               }
-               g_mutex_unlock(&uam_dbus_clients_mutex);
-
-               if (0 == count) {
-                       UAM_ERR("Quit ua-manager");
-                       g_main_loop_quit(main_loop);
-               }
+               /* Clean up client info */
+               _uam_manager_cleanup_client(name);
        }
 }
 
@@ -989,3 +971,27 @@ void _uam_manager_remove_req_ctxt_from_list(uam_request_context_t *req_info)
        }
        FUNC_EXIT;
 }
+
+void _uam_manager_cleanup_client(const char *name)
+{
+       int count = 1;
+       GSList *list = NULL;
+
+       /* Cleanup all pending request from this sender */
+       __uam_manager_cleanup_requests_from_sender(name);
+
+       g_mutex_lock(&uam_dbus_clients_mutex);
+       list = __uam_list_find_client(name);
+       if (list) {
+               /* found bus name in our bus list */
+               __uamd_dbus_client_cleanup((gpointer)list->data);
+               uam_dbus_clients = g_slist_remove_link(uam_dbus_clients, list);
+               count = g_slist_length(uam_dbus_clients);
+       }
+       g_mutex_unlock(&uam_dbus_clients_mutex);
+
+       if (0 == count) {
+               UAM_ERR("Quit ua-manager");
+               g_main_loop_quit(main_loop);
+       }
+}