Fix a bug for using heap after free 69/201569/2 accepted/tizen_4.0_unified tizen_4.0 accepted/tizen/4.0/unified/20190325.001322 submit/tizen_4.0/20190322.054436
authorhyunuktak <hyunuk.tak@samsung.com>
Mon, 18 Mar 2019 00:19:43 +0000 (09:19 +0900)
committerhyunuktak <hyunuk.tak@samsung.com>
Wed, 20 Mar 2019 08:09:52 +0000 (17:09 +0900)
Change-Id: I9fee807e5bdebd36e51c5b5c2c9d74489fa9c166
Signed-off-by: hyunuktak <hyunuk.tak@samsung.com>
packaging/stc-manager.spec
src/stc-manager.c

index b784dcb..85c845c 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       stc-manager
 Summary:    STC(Smart Traffic Control) manager
-Version:    0.0.53
+Version:    0.0.54
 Release:    0
 Group:      Network & Connectivity/Other
 License:    Apache-2.0
index f40e6f5..6f7f19f 100755 (executable)
@@ -89,7 +89,12 @@ static stc_s *__stc_manager_init(void)
 
        cgroup_set_release_agent(NET_CLS_SUBSYS, NET_RELEASE_AGENT);
 
-       EXEC(STC_ERROR_NONE, stc_db_initialize());
+       err = stc_db_initialize();
+       if (err != STC_ERROR_NONE) {
+               STC_LOGD("Failed to initialize stc db");
+               FREE(g_stc);
+               return NULL;
+       }
 
        stc_plugin_popup_init();
        stc_plugin_appstatus_init();
@@ -97,8 +102,11 @@ static stc_s *__stc_manager_init(void)
        stc_plugin_procfs_init();
 
        err = stc_monitor_init();
-       if (err != STC_ERROR_NONE)
-               goto handle_error;
+       if (err != STC_ERROR_NONE) {
+               STC_LOGD("Failed to initialize stc manager");
+               __stc_manager_deinit();
+               return NULL;
+       }
 
        stc_plugin_procfs_load_pid();
        stc_manager_gdbus_init((gpointer)stc);
@@ -106,11 +114,6 @@ static stc_s *__stc_manager_init(void)
        STC_LOGI("stc manager initialized");
        __STC_LOG_FUNC_EXIT__;
        return stc;
-
-handle_error:
-       STC_LOGD("Failed to initialize stc manager");
-       __stc_manager_deinit();
-       return NULL;
 }
 
 stc_s *stc_get_manager(void)
@@ -149,10 +152,10 @@ gint32 main(gint32 argc, gchar *argv[])
 
        ret = 0;
 
-fail:
        if (stc_emulator_is_emulated() == FALSE)
                __stc_manager_deinit();
 
+fail:
        if (main_loop)
                g_main_loop_unref(main_loop);