Change GQaurk to char* 27/132327/17
authorInkyun Kil <inkyun.kil@samsung.com>
Fri, 2 Jun 2017 08:36:43 +0000 (17:36 +0900)
committerJiwoong Im <jiwoong.im@samsung.com>
Thu, 6 Jul 2017 09:59:55 +0000 (18:59 +0900)
g_quark_from_string api causes memory increase

Change-Id: If4e6d8aab3352a63a22bcbd03064588b44ba5b5c
Signed-off-by: Inkyun Kil <inkyun.kil@samsung.com>
Signed-off-by: Jiwoong Im <jiwoong.im@samsung.com>
alarm-manager-registry.c
alarm-manager-schedule.c
alarm-manager.c
include/alarm-internal.h
src/alarm-lib-stub.c
src/alarm-lib.c

index 0554c0a..60da8ee 100644 (file)
@@ -69,19 +69,14 @@ bool _save_alarms(__alarm_info_t *__alarm_info)
                        __alarm_info->uid,
                        __alarm_info->pid,
                        __alarm_info->global,
-                       (char *)g_quark_to_string(__alarm_info->quark_caller_pkgid),
-                       (char *)g_quark_to_string(__alarm_info->quark_callee_pkgid),
-                       (char *)g_quark_to_string(
-                               __alarm_info->quark_app_unique_name),
-                       (char *)g_quark_to_string(
-                               __alarm_info->quark_app_service_name),
-                       (char *)g_quark_to_string(
-                               __alarm_info->quark_app_service_name_mod),
-                       (char *)g_quark_to_string(
-                               __alarm_info->quark_bundle),
-                       strlen((char *)g_quark_to_string(__alarm_info->quark_noti)),
-                       (char *)g_quark_to_string(
-                               __alarm_info->quark_noti),
+                       CHECK_NULL_STRING(__alarm_info->caller_pkgid),
+                       CHECK_NULL_STRING(__alarm_info->callee_pkgid),
+                       CHECK_NULL_STRING(__alarm_info->app_unique_name),
+                       CHECK_NULL_STRING(__alarm_info->app_service_name),
+                       CHECK_NULL_STRING(__alarm_info->app_service_name_mod),
+                       CHECK_NULL_STRING(__alarm_info->bundle),
+                       __alarm_info->noti ? strlen(__alarm_info->noti) : 0,
+                       CHECK_NULL_STRING(__alarm_info->noti),
                        start->year,
                        start->month,
                        start->day,
@@ -93,10 +88,8 @@ bool _save_alarms(__alarm_info_t *__alarm_info)
                        mode->repeat,
                        alarm_info->alarm_type,
                        alarm_info->reserved_info,
-                       (char *)g_quark_to_string(
-                       __alarm_info->quark_dst_service_name),
-                       (char *)g_quark_to_string(
-                       __alarm_info->quark_dst_service_name_mod));
+                       CHECK_NULL_STRING(__alarm_info->dst_service_name),
+                       CHECK_NULL_STRING(__alarm_info->dst_service_name_mod));
 
        if (SQLITE_OK != sqlite3_exec(alarmmgr_db, query, NULL, NULL, &error_message)) {
                SECURE_LOGE("sqlite3_exec() is failed. query = %s, error message = %s", query, error_message);
@@ -128,19 +121,14 @@ bool _update_alarms(__alarm_info_t *__alarm_info)
                        __alarm_info->uid,
                        __alarm_info->pid,
                        __alarm_info->global,
-                       (char *)g_quark_to_string(__alarm_info->quark_caller_pkgid),
-                       (char *)g_quark_to_string(__alarm_info->quark_callee_pkgid),
-                       (char *)g_quark_to_string(
-                               __alarm_info->quark_app_unique_name),
-                       (char *)g_quark_to_string(
-                               __alarm_info->quark_app_service_name),
-                       (char *)g_quark_to_string(
-                               __alarm_info->quark_app_service_name_mod),
-                       (char *)g_quark_to_string(
-                               __alarm_info->quark_bundle),
-                       strlen((char *)g_quark_to_string(__alarm_info->quark_noti)),
-                       (char *)g_quark_to_string(
-                               __alarm_info->quark_noti),
+                       CHECK_NULL_STRING(__alarm_info->caller_pkgid),
+                       CHECK_NULL_STRING(__alarm_info->callee_pkgid),
+                       CHECK_NULL_STRING(__alarm_info->app_unique_name),
+                       CHECK_NULL_STRING(__alarm_info->app_service_name),
+                       CHECK_NULL_STRING(__alarm_info->app_service_name_mod),
+                       CHECK_NULL_STRING(__alarm_info->bundle),
+                       __alarm_info->noti ? strlen(__alarm_info->noti) : 0,
+                       CHECK_NULL_STRING(__alarm_info->noti),
                        start->year,
                        start->month,
                        start->day,
@@ -152,10 +140,8 @@ bool _update_alarms(__alarm_info_t *__alarm_info)
                        mode->repeat,
                        alarm_info->alarm_type,
                        alarm_info->reserved_info,
-                       (char *)g_quark_to_string(
-                               __alarm_info->quark_dst_service_name),
-                       (char *)g_quark_to_string(
-                               __alarm_info->quark_dst_service_name_mod),
+                       CHECK_NULL_STRING(__alarm_info->dst_service_name),
+                       CHECK_NULL_STRING(__alarm_info->dst_service_name_mod),
                        __alarm_info->alarm_id);
 
        if (SQLITE_OK != sqlite3_exec(alarmmgr_db, query, NULL, NULL, &error_message)) {
@@ -215,7 +201,7 @@ void _load_alarms_from_registry()
 
        for (i = 0; SQLITE_ROW == sqlite3_step(stmt); i++) {
                col_idx = 0;
-               __alarm_info = malloc(sizeof(__alarm_info_t));
+               __alarm_info = (__alarm_info_t *)calloc(1, sizeof(__alarm_info_t));
 
                if (G_UNLIKELY(__alarm_info == NULL)) {
                        ALARM_MGR_EXCEPTION_PRINT("Memory allocation failed.");
@@ -265,20 +251,17 @@ void _load_alarms_from_registry()
                strncpy(dst_service_name_mod, (const char *)sqlite3_column_text(stmt, col_idx++),
                        MAX_SERVICE_NAME_LEN - 1);
 
-               __alarm_info->quark_caller_pkgid = g_quark_from_string(caller_pkgid);
-               __alarm_info->quark_callee_pkgid = g_quark_from_string(callee_pkgid);
-               __alarm_info->quark_app_unique_name =
-                   g_quark_from_string(app_unique_name);
-               __alarm_info->quark_app_service_name =
-                   g_quark_from_string(app_service_name);
-               __alarm_info->quark_app_service_name_mod =
-                   g_quark_from_string(app_service_name_mod);
-               __alarm_info->quark_dst_service_name =
-                   g_quark_from_string(dst_service_name);
-               __alarm_info->quark_dst_service_name_mod =
-                   g_quark_from_string(dst_service_name_mod);
-               __alarm_info->quark_bundle = g_quark_from_string(bundle);
-               __alarm_info->quark_noti = g_quark_from_string(noti);
+               __alarm_info->caller_pkgid = STRDUP_WITH_NULLCMP(caller_pkgid);
+               __alarm_info->callee_pkgid = STRDUP_WITH_NULLCMP(callee_pkgid);
+               __alarm_info->app_unique_name = STRDUP_WITH_NULLCMP(app_unique_name);
+               __alarm_info->app_service_name = STRDUP_WITH_NULLCMP(app_service_name);
+               __alarm_info->app_service_name_mod =
+                       STRDUP_WITH_NULLCMP(app_service_name_mod);
+               __alarm_info->dst_service_name = STRDUP_WITH_NULLCMP(dst_service_name);
+               __alarm_info->dst_service_name_mod =
+                       STRDUP_WITH_NULLCMP(dst_service_name_mod);
+               __alarm_info->bundle = STRDUP_WITH_NULLCMP(bundle);
+               __alarm_info->noti = STRDUP_WITH_NULLCMP(noti);
                free(noti);
 
                if (is_disabled) {
index bcf1f48..5837009 100644 (file)
@@ -49,7 +49,7 @@ bool _alarm_schedule(void);
 
 bool _clear_scheduled_alarm_list()
 {
-       g_slist_free_full(g_scheduled_alarm_list, g_free);
+       g_slist_free_full(g_scheduled_alarm_list, free);
        g_scheduled_alarm_list = NULL;
 
        return true;
@@ -89,18 +89,19 @@ bool _add_to_scheduled_alarm_list(__alarm_info_t *__alarm_info)
        alarm->pid = __alarm_info->pid;
        alarm->__alarm_info = __alarm_info;
 
-       SECURE_LOGD("%s :alarm->uid =%d, alarm->pid =%d, app_service_name=%s(%u)\n",
+       SECURE_LOGD("%s :alarm->uid =%d, alarm->pid =%d, app_service_name=%s\n",
                        __FUNCTION__, alarm->uid, alarm->pid,
-                       g_quark_to_string(alarm->__alarm_info->quark_app_service_name),
-                       alarm->__alarm_info->quark_app_service_name);
+                       alarm->__alarm_info->app_service_name);
 
-       if (alarm->__alarm_info->quark_app_service_name != g_quark_from_string(WAKEUP_ALARM_APP_ID)) {
+       if (alarm->__alarm_info->app_service_name &&
+                       strcmp(WAKEUP_ALARM_APP_ID, alarm->__alarm_info->app_service_name)) {
                g_scheduled_alarm_list = g_slist_append(g_scheduled_alarm_list, alarm);
        } else {
                for (iter = g_scheduled_alarm_list; iter != NULL; iter = g_slist_next(iter)) {
                        count++;
                        entry = iter->data;
-                       if (entry->__alarm_info->quark_app_service_name != g_quark_from_string(WAKEUP_ALARM_APP_ID)) {
+                       if (entry->__alarm_info->app_service_name &&
+                                       strcmp(WAKEUP_ALARM_APP_ID, entry->__alarm_info->app_service_name)) {
                                prior = true;
                                break;
                        }
@@ -128,7 +129,7 @@ bool _remove_from_scheduled_alarm_list(uid_t uid, alarm_id_t alarm_id)
                alarm = iter->data;
                if (alarm->uid == uid && alarm->alarm_id == alarm_id) {
                        g_scheduled_alarm_list = g_slist_remove(g_scheduled_alarm_list, iter->data);
-                       g_free(alarm);
+                       free(alarm);
                        result = true;
                        break;
                }
index 7664a49..0a2c3b9 100644 (file)
@@ -158,6 +158,7 @@ static bool __initialize_noti();
 static bool __initialize_dbus();
 static bool __initialize_db();
 static void __initialize();
+void _release_alarm_info_t();
 void on_bus_name_owner_changed(GDBusConnection *connection, const gchar *sender_name, const gchar *object_path,
                const gchar *interface_name, const gchar *signal_name, GVariant *parameters, gpointer user_data);
 bool __get_caller_unique_name(int pid, char *unique_name, bool *is_app, uid_t uid);
@@ -452,7 +453,7 @@ int __set_time(time_t _time)
 
 bool __alarm_clean_list()
 {
-       g_slist_free_full(alarm_context.alarms, g_free);
+       g_slist_free_full(alarm_context.alarms, _release_alarm_info_t);
        return true;
 }
 
@@ -514,7 +515,7 @@ static bool __check_bundle_for_update(const gchar *b_data, uid_t uid)
        bundle *b;
        bool ret = false;
 
-       if (strlen(b_data) == 4 && strncmp(b_data, "null", 4) == 0)
+       if (b_data == NULL)
                return true;
 
        b = bundle_decode((bundle_raw *)b_data, strlen(b_data));
@@ -552,7 +553,7 @@ static __alarm_info_t *__alarm_update_in_list(int uid, alarm_id_t alarm_id,
 
                        if (update_flag == ALARM_UPDATE_FLAG_TIME ||
                                        ALARM_UPDATE_FLAG_WEEK) {
-                               if (!__check_bundle_for_update(g_quark_to_string(entry->quark_bundle),
+                               if (!__check_bundle_for_update(entry->bundle,
                                                entry->uid)) {
                                        *error_code = ERR_ALARM_NOT_PERMITTED_APP;
                                        return NULL;
@@ -624,7 +625,7 @@ static bool __alarm_remove_from_list(uid_t uid, alarm_id_t alarm_id,
                                _delete_alarms(alarm_id);
 
                        alarm_context.alarms = g_slist_remove(alarm_context.alarms, iter->data);
-                       g_free(entry);
+                       _release_alarm_info_t(entry);
                        found = true;
                        break;
                }
@@ -873,9 +874,9 @@ static bool __alarm_create_appsvc(alarm_info_t *alarm_info, alarm_id_t *alarm_id
 
        __alarm_info_t *__alarm_info = NULL;
 
-       __alarm_info = malloc(sizeof(__alarm_info_t));
+       __alarm_info = (__alarm_info_t *)calloc(1, sizeof(__alarm_info_t));
        if (__alarm_info == NULL) {
-               SECURE_LOGE("Caution!! app_pid=%d, malloc failed. it seems to be OOM.", pid);
+               SECURE_LOGE("Caution!! app_pid=%d, calloc failed. it seems to be OOM.", pid);
                *error_code = ERR_ALARM_SYSTEM_FAIL;
                return false;
        }
@@ -888,47 +889,39 @@ static bool __alarm_create_appsvc(alarm_info_t *alarm_info, alarm_id_t *alarm_id
 
        if (__get_cached_unique_name(pid, app_name, &caller_is_app, uid) == false) {
                *error_code = ERR_ALARM_SYSTEM_FAIL;
-               free(__alarm_info);
+               _release_alarm_info_t(__alarm_info);
                return false;
        }
-       __alarm_info->quark_app_unique_name = g_quark_from_string(app_name);
+       __alarm_info->app_unique_name = strdup(app_name);
 
        /* caller */
-       __alarm_info->quark_caller_pkgid = g_quark_from_string("null");
-
        if (caller_is_app) {
                if (pkgmgrinfo_appinfo_get_usr_appinfo(app_name, uid, &caller_handle) == PMINFO_R_OK) {
                        if (pkgmgrinfo_appinfo_get_pkgid(caller_handle, &caller_pkgid) == PMINFO_R_OK) {
                                if (caller_pkgid)
-                                       __alarm_info->quark_caller_pkgid = g_quark_from_string(caller_pkgid);
+                                       __alarm_info->caller_pkgid = strdup(caller_pkgid);
                        }
                        pkgmgrinfo_appinfo_destroy_appinfo(caller_handle);
                }
        }
 
        /* callee */
-       __alarm_info->quark_callee_pkgid = g_quark_from_string("null");
-
        b = bundle_decode((bundle_raw *)bundle_data, strlen(bundle_data));
        callee_appid = appsvc_get_appid(b);
        if (pkgmgrinfo_appinfo_get_usr_appinfo(callee_appid, uid, &callee_handle) == PMINFO_R_OK) {
                if (pkgmgrinfo_appinfo_get_pkgid(callee_handle, &callee_pkgid) == PMINFO_R_OK) {
                        if (callee_pkgid)
-                               __alarm_info->quark_callee_pkgid = g_quark_from_string(callee_pkgid);
+                               __alarm_info->callee_pkgid = strdup(callee_pkgid);
                }
                pkgmgrinfo_appinfo_destroy_appinfo(callee_handle);
        }
 
        SECURE_LOGD("caller_pkgid = %s, callee_pkgid = %s",
-               g_quark_to_string(__alarm_info->quark_caller_pkgid), g_quark_to_string(__alarm_info->quark_callee_pkgid));
+               __alarm_info->caller_pkgid, __alarm_info->callee_pkgid);
 
        bundle_encode(b, &b_data, &datalen);
-       __alarm_info->quark_bundle = g_quark_from_string((const gchar *)b_data);
-       __alarm_info->quark_noti = g_quark_from_string("null");
-       __alarm_info->quark_app_service_name = g_quark_from_string("null");
-       __alarm_info->quark_dst_service_name = g_quark_from_string("null");
-       __alarm_info->quark_app_service_name_mod = g_quark_from_string("null");
-       __alarm_info->quark_dst_service_name_mod = g_quark_from_string("null");
+       if (b_data)
+               __alarm_info->bundle = strdup((const gchar *)b_data);
 
        bundle_free(b);
        if (b_data) {
@@ -950,7 +943,7 @@ static bool __alarm_create_appsvc(alarm_info_t *alarm_info, alarm_id_t *alarm_id
 
        due_time = _alarm_next_duetime(__alarm_info);
        if (__alarm_add_to_list(__alarm_info) == false) {
-               free(__alarm_info);
+               _release_alarm_info_t(__alarm_info);
                *error_code = ERR_ALARM_SYSTEM_FAIL;
                return false;
        }
@@ -1006,9 +999,9 @@ static bool __alarm_create(alarm_info_t *alarm_info, alarm_id_t *alarm_id, uid_t
 
        __alarm_info_t *__alarm_info = NULL;
 
-       __alarm_info = malloc(sizeof(__alarm_info_t));
+       __alarm_info = (__alarm_info_t *)calloc(1, sizeof(__alarm_info_t));
        if (__alarm_info == NULL) {
-               SECURE_LOGE("Caution!! app_pid=%d, malloc "
+               SECURE_LOGE("Caution!! app_pid=%d, calloc "
                                          "failed. it seems to be OOM\n", pid);
                *error_code = ERR_ALARM_SYSTEM_FAIL;
                return false;
@@ -1016,7 +1009,6 @@ static bool __alarm_create(alarm_info_t *alarm_info, alarm_id_t *alarm_id, uid_t
        __alarm_info->uid = uid;
        __alarm_info->pid = pid;
        __alarm_info->alarm_id = -1;
-       __alarm_info->quark_caller_pkgid = g_quark_from_string("null");
        __alarm_info->method = method;
        __alarm_info->requested_interval = requested_interval;
        __alarm_info->is_ref = is_ref;
@@ -1024,7 +1016,7 @@ static bool __alarm_create(alarm_info_t *alarm_info, alarm_id_t *alarm_id, uid_t
 
        if (__get_cached_unique_name(pid, unique_name, &caller_is_app, uid) == false) {
                *error_code = ERR_ALARM_SYSTEM_FAIL;
-               free(__alarm_info);
+               _release_alarm_info_t(__alarm_info);
                return false;
        }
 
@@ -1033,22 +1025,23 @@ static bool __alarm_create(alarm_info_t *alarm_info, alarm_id_t *alarm_id, uid_t
                if (pkgmgrinfo_appinfo_get_usr_appinfo(unique_name, uid, &caller_handle) == PMINFO_R_OK) {
                        if (pkgmgrinfo_appinfo_get_pkgid(caller_handle, &caller_pkgid) == PMINFO_R_OK) {
                                if (caller_pkgid)
-                                       __alarm_info->quark_caller_pkgid = g_quark_from_string(caller_pkgid);
+                                       __alarm_info->caller_pkgid = strdup(caller_pkgid);
                        }
                        pkgmgrinfo_appinfo_destroy_appinfo(caller_handle);
                }
        }
 
-       __alarm_info->quark_callee_pkgid = g_quark_from_string("null");
-       SECURE_LOGD("caller_pkgid = %s, callee_pkgid = null", g_quark_to_string(__alarm_info->quark_caller_pkgid));
+       SECURE_LOGD("caller_pkgid = %s, callee_pkgid = null", __alarm_info->caller_pkgid);
 
-       __alarm_info->quark_app_unique_name = g_quark_from_string(unique_name);
-       __alarm_info->quark_app_service_name = g_quark_from_string(app_service_name);
-       __alarm_info->quark_app_service_name_mod = g_quark_from_string(app_service_name_mod);
-       __alarm_info->quark_dst_service_name = g_quark_from_string(dst_service_name);
-       __alarm_info->quark_dst_service_name_mod = g_quark_from_string(dst_service_name_mod);
-       __alarm_info->quark_bundle = g_quark_from_string("null");
-       __alarm_info->quark_noti = g_quark_from_string("null");
+       __alarm_info->app_unique_name = strdup(unique_name);
+       if (app_service_name)
+               __alarm_info->app_service_name = strdup(app_service_name);
+       if (app_service_name_mod)
+               __alarm_info->app_service_name_mod = strdup(app_service_name_mod);
+       if (dst_service_name)
+               __alarm_info->dst_service_name = strdup(dst_service_name);
+       if (dst_service_name_mod)
+               __alarm_info->dst_service_name_mod = strdup(dst_service_name_mod);
 
        __alarm_set_start_and_end_time(alarm_info, __alarm_info);
        memcpy(&(__alarm_info->alarm_info), alarm_info, sizeof(alarm_info_t));
@@ -1057,11 +1050,11 @@ static bool __alarm_create(alarm_info_t *alarm_info, alarm_id_t *alarm_id, uid_t
        time(&current_time);
 
        SECURE_LOGD("[alarm-server]:pid=%d, app_unique_name=%s, "
-               "app_service_name=%s,dst_service_name=%s, c_due_time=%ld", \
-               pid, g_quark_to_string(__alarm_info->quark_app_unique_name), \
-               g_quark_to_string(__alarm_info->quark_app_service_name), \
-               g_quark_to_string(__alarm_info->quark_dst_service_name), \
-                           alarm_context.c_due_time);
+                       "app_service_name=%s,dst_service_name=%s, c_due_time=%ld", \
+                       pid, __alarm_info->app_unique_name, \
+                       __alarm_info->app_service_name, \
+                       __alarm_info->dst_service_name, \
+                       alarm_context.c_due_time);
 
        if (alarm_context.c_due_time < current_time) {
                ALARM_MGR_EXCEPTION_PRINT("Caution!! alarm_context.c_due_time "
@@ -1071,7 +1064,7 @@ static bool __alarm_create(alarm_info_t *alarm_info, alarm_id_t *alarm_id, uid_t
 
        due_time = _alarm_next_duetime(__alarm_info);
        if (__alarm_add_to_list(__alarm_info) == false) {
-               free(__alarm_info);
+               _release_alarm_info_t(__alarm_info);
                return false;
        }
 
@@ -1124,9 +1117,9 @@ static bool __alarm_create_noti(alarm_info_t *alarm_info, alarm_id_t *alarm_id,
 
        __alarm_info_t *__alarm_info = NULL;
 
-       __alarm_info = malloc(sizeof(__alarm_info_t));
+       __alarm_info = (__alarm_info_t *)calloc(1, sizeof(__alarm_info_t));
        if (__alarm_info == NULL) {
-               SECURE_LOGE("Caution!! app_pid=%d, malloc "
+               SECURE_LOGE("Caution!! app_pid=%d, calloc "
                                          "failed. it seems to be OOM\n", pid);
                *error_code = ERR_ALARM_SYSTEM_FAIL;
                return false;
@@ -1139,33 +1132,26 @@ static bool __alarm_create_noti(alarm_info_t *alarm_info, alarm_id_t *alarm_id,
 
        if (__get_cached_unique_name(pid, app_name, &caller_is_app, uid) == false) {
                *error_code = ERR_ALARM_SYSTEM_FAIL;
-               free(__alarm_info);
+               _release_alarm_info_t(__alarm_info);
                return false;
        }
-       __alarm_info->quark_app_unique_name = g_quark_from_string(app_name);
-
-       __alarm_info->quark_caller_pkgid = g_quark_from_string("null");
+       __alarm_info->app_unique_name = strdup(app_name);
 
        if (caller_is_app) {
                if (pkgmgrinfo_appinfo_get_usr_appinfo(app_name, uid, &caller_handle) == PMINFO_R_OK) {
                        if (pkgmgrinfo_appinfo_get_pkgid(caller_handle, &caller_pkgid) == PMINFO_R_OK) {
                                if (caller_pkgid)
-                                       __alarm_info->quark_caller_pkgid = g_quark_from_string(caller_pkgid);
+                                       __alarm_info->caller_pkgid = strdup(caller_pkgid);
                        }
                        pkgmgrinfo_appinfo_destroy_appinfo(caller_handle);
                }
        }
 
-       __alarm_info->quark_callee_pkgid = g_quark_from_string("null");
        SECURE_LOGD("caller_pkgid = %s, callee_pkgid = null",
-               g_quark_to_string(__alarm_info->quark_caller_pkgid));
+               __alarm_info->caller_pkgid);
 
-       __alarm_info->quark_bundle = g_quark_from_string("null");
-       __alarm_info->quark_noti = g_quark_from_string(noti_data);
-       __alarm_info->quark_app_service_name = g_quark_from_string("null");
-       __alarm_info->quark_dst_service_name = g_quark_from_string("null");
-       __alarm_info->quark_app_service_name_mod = g_quark_from_string("null");
-       __alarm_info->quark_dst_service_name_mod = g_quark_from_string("null");
+       if (noti_data)
+               __alarm_info->noti = strdup(noti_data);
 
        __alarm_set_start_and_end_time(alarm_info, __alarm_info);
        memcpy(&(__alarm_info->alarm_info), alarm_info, sizeof(alarm_info_t));
@@ -1174,11 +1160,11 @@ static bool __alarm_create_noti(alarm_info_t *alarm_info, alarm_id_t *alarm_id,
        time(&current_time);
 
        SECURE_LOGD("[alarm-server]:pid=%d, app_unique_name=%s, "
-               "app_service_name=%s,dst_service_name=%s, c_due_time=%ld", \
-               pid, g_quark_to_string(__alarm_info->quark_app_unique_name), \
-               g_quark_to_string(__alarm_info->quark_app_service_name), \
-               g_quark_to_string(__alarm_info->quark_dst_service_name), \
-                           alarm_context.c_due_time);
+                       "app_service_name=%s,dst_service_name=%s, c_due_time=%ld", \
+                       pid, __alarm_info->app_unique_name, \
+                       __alarm_info->app_service_name, \
+                       __alarm_info->dst_service_name, \
+                       alarm_context.c_due_time);
 
        if (alarm_context.c_due_time < current_time) {
                ALARM_MGR_EXCEPTION_PRINT("Caution!! alarm_context.c_due_time "
@@ -1188,7 +1174,7 @@ static bool __alarm_create_noti(alarm_info_t *alarm_info, alarm_id_t *alarm_id,
 
        due_time = _alarm_next_duetime(__alarm_info);
        if (__alarm_add_to_list(__alarm_info) == false) {
-               free(__alarm_info);
+               _release_alarm_info_t(__alarm_info);
                return false;
        }
 
@@ -1752,10 +1738,10 @@ static void __alarm_expired()
 
                /* Case #1. The process is an application launched by app_control.
                 * It registered an alarm using launch-based APIs like alarm_schedule_xxx, alarmmgr_xxx_appsvc. */
-               if (strncmp(g_quark_to_string(__alarm_info->quark_bundle), "null", 4) != 0) {
-                       b_len = strlen(g_quark_to_string(__alarm_info->quark_bundle));
+               if (__alarm_info->bundle != NULL) {
+                       b_len = strlen(__alarm_info->bundle);
 
-                       b = bundle_decode((bundle_raw *)g_quark_to_string(__alarm_info->quark_bundle), b_len);
+                       b = bundle_decode((bundle_raw *)(__alarm_info->bundle), b_len);
 
                        if (b == NULL) {
                                ALARM_MGR_EXCEPTION_PRINT("Error!!!..Unable to decode the bundle!!\n");
@@ -1808,12 +1794,12 @@ static void __alarm_expired()
                                }
                                bundle_free(b);
                        }
-               } else if (strncmp(g_quark_to_string(__alarm_info->quark_noti), "null", 4) != 0) {
+               } else if (__alarm_info->noti != NULL) {
                        guchar *noti_data;
                        int datalen;
                        ret = -1;
 
-                       noti_data = g_base64_decode(g_quark_to_string(__alarm_info->quark_noti),
+                       noti_data = g_base64_decode(__alarm_info->noti,
                                        (gsize *)&datalen);
                        if (noti_data) {
                                ret = __post_notification(noti_data, datalen, __alarm_info->uid);
@@ -1827,14 +1813,14 @@ static void __alarm_expired()
                        pkgmgrinfo_appinfo_h appinfo_handle = NULL;
                        struct running_info_t app_info;
 
-                       if (g_quark_to_string(__alarm_info->quark_bundle) != NULL && strncmp(g_quark_to_string(__alarm_info->quark_dst_service_name), "null", 4) == 0) {
-                               SECURE_LOGD("[alarm-server]:destination is null, so we send expired alarm to %s(%u).",
-                                               g_quark_to_string(__alarm_info->quark_app_service_name), __alarm_info->quark_app_service_name);
-                               destination_app_service_name = g_quark_to_string(__alarm_info->quark_app_service_name_mod);
+                       if (__alarm_info->dst_service_name == NULL) {
+                               SECURE_LOGD("[alarm-server]:destination is null, so we send expired alarm to %s.",
+                                               __alarm_info->app_service_name);
+                               destination_app_service_name = __alarm_info->app_service_name_mod;
                        } else {
-                               SECURE_LOGD("[alarm-server]:destination :%s(%u)",
-                                               g_quark_to_string(__alarm_info->quark_dst_service_name), __alarm_info->quark_dst_service_name);
-                               destination_app_service_name = g_quark_to_string(__alarm_info->quark_dst_service_name_mod);
+                               SECURE_LOGD("[alarm-server]:destination :%s",
+                                               __alarm_info->dst_service_name);
+                               destination_app_service_name = __alarm_info->dst_service_name_mod;
                        }
 
                        /*
@@ -1846,12 +1832,12 @@ static void __alarm_expired()
                         */
                        SECURE_LOGD("[alarm-server]: destination_app_service_name :%s, app_pid=%d", destination_app_service_name, app_pid);
 
-                       if (g_quark_to_string(__alarm_info->quark_dst_service_name) != NULL && strncmp(g_quark_to_string(__alarm_info->quark_dst_service_name), "null", 4) == 0) {
-                               if (g_quark_to_string(__alarm_info->quark_app_service_name) != NULL && strlen(g_quark_to_string(__alarm_info->quark_app_service_name)) > 6)
-                                       strncpy(appid, g_quark_to_string(__alarm_info->quark_app_service_name) + 6, strlen(g_quark_to_string(__alarm_info->quark_app_service_name)) - 6);
+                       if (__alarm_info->dst_service_name == NULL) {
+                               if (__alarm_info->app_service_name != NULL && strlen(__alarm_info->app_service_name) > 6)
+                                       strncpy(appid, __alarm_info->app_service_name + 6, strlen(__alarm_info->app_service_name) - 6);
                        } else {
-                               if (g_quark_to_string(__alarm_info->quark_dst_service_name)  != NULL && strlen(g_quark_to_string(__alarm_info->quark_dst_service_name)) > 6)
-                                       strncpy(appid,  g_quark_to_string(__alarm_info->quark_dst_service_name) + 6, strlen(g_quark_to_string(__alarm_info->quark_dst_service_name)) - 6);
+                               if (strlen(__alarm_info->dst_service_name) > 6)
+                                       strncpy(appid,  __alarm_info->dst_service_name + 6, strlen(__alarm_info->dst_service_name) - 6);
                        }
 
                        ret = pkgmgrinfo_appinfo_get_usr_appinfo(appid, __alarm_info->uid, &appinfo_handle);
@@ -2052,7 +2038,7 @@ static int __on_app_enable_cb(uid_t target_uid, int req_id,
                        entry = gs_iter->data;
 
                        gs_iter = g_slist_next(gs_iter);
-                       if (strncmp(appid, g_quark_to_string(entry->quark_app_unique_name), strlen(appid)) == 0) {
+                       if (strncmp(appid, entry->app_unique_name, strlen(appid)) == 0) {
                                duetime = _alarm_next_duetime(entry);
                                SECURE_LOGD("Restore alarm_id(%d) duetime(%d) appid(%s)", entry->alarm_id, duetime, appid);
                                alarm_context.alarms = g_slist_append(alarm_context.alarms, entry);
@@ -2091,7 +2077,7 @@ static int __on_app_disable_cb(uid_t target_uid, int req_id,
                        entry = gs_iter->data;
 
                        gs_iter = g_slist_next(gs_iter);
-                       if (strncmp(appid, g_quark_to_string(entry->quark_app_unique_name), strlen(appid)) == 0) {
+                       if (strncmp(appid, entry->app_unique_name, strlen(appid)) == 0) {
                                if (!(entry->alarm_info.alarm_type & ALARM_TYPE_VOLATILE))
                                        _update_db_for_disabled_alarm(entry->alarm_id, true);
                                g_disabled_alarm_list = g_slist_append(g_disabled_alarm_list, entry);
@@ -2126,8 +2112,8 @@ static int __on_app_uninstalled(uid_t target_uid, int req_id, const char *pkg_ty
                for (gs_iter = alarm_context.alarms; gs_iter != NULL;) {
                        entry = gs_iter->data;
 
-                       const char* caller_pkgid = g_quark_to_string(entry->quark_caller_pkgid);
-                       const char* callee_pkgid = g_quark_to_string(entry->quark_callee_pkgid);
+                       const char* caller_pkgid = entry->caller_pkgid;
+                       const char* callee_pkgid = entry->callee_pkgid;
 
                        gs_iter = g_slist_next(gs_iter);
                        if ((caller_pkgid && strncmp(pkgid, caller_pkgid, strlen(pkgid)) == 0) ||
@@ -2146,7 +2132,7 @@ static int __on_app_uninstalled(uid_t target_uid, int req_id, const char *pkg_ty
 
                                SECURE_LOGD("Remove pkgid[%s], alarm_id[%d]", pkgid, entry->alarm_id);
                                alarm_context.alarms = g_slist_remove(alarm_context.alarms, entry);
-                               g_free(entry);
+                               _release_alarm_info_t(entry);
 
                        }
                }
@@ -2876,6 +2862,8 @@ gboolean alarm_manager_alarm_create(AlarmManager *obj, GDBusMethodInvocation *in
        int uid;
        int pid;
        const char *name = g_dbus_method_invocation_get_sender(invoc);
+       char *_reserved_service_name = NULL;
+       char *_reserved_service_name_mod = NULL;
 
        pid = __get_caller_pid(name);
        uid = __get_caller_uid(name);
@@ -2904,8 +2892,13 @@ gboolean alarm_manager_alarm_create(AlarmManager *obj, GDBusMethodInvocation *in
        alarm_info.alarm_type = alarm_type;
        alarm_info.reserved_info = reserved_info;
 
+       if (strcmp(reserved_service_name, "null") == 0)
+               _reserved_service_name = NULL;
+       if (strcmp(reserved_service_name_mod, "null") == 0)
+               _reserved_service_name_mod = NULL;
+
        if (!__alarm_create(&alarm_info, &alarm_id, uid, pid, 0, 0, 0, app_service_name, app_service_name_mod,
-                               reserved_service_name, reserved_service_name_mod, &return_code)) {
+                               _reserved_service_name, _reserved_service_name_mod, &return_code)) {
                ALARM_MGR_EXCEPTION_PRINT("Unable to create alarm! return_code[%d]", return_code);
 #ifdef _APPFW_FEATURE_ALARM_MANAGER_MODULE_LOG
                strncpy(log_tag, "FAIL: CREATE", strlen("FAIL: CREATE"));
@@ -2997,7 +2990,7 @@ gboolean alarm_manager_alarm_create_periodic(AlarmManager *obj, GDBusMethodInvoc
 
        if (!__alarm_create(&alarm_info, &alarm_id, uid, pid, method, interval * 60, is_ref,
                                app_service_name, app_service_name_mod,
-                               "null", "null", &return_code)) {
+                               NULL, NULL, &return_code)) {
                ALARM_MGR_EXCEPTION_PRINT("Unable to create alarm! return_code[%d]", return_code);
 #ifdef _APPFW_FEATURE_ALARM_MANAGER_MODULE_LOG
                strncpy(log_tag, "FAIL: CREATE", strlen("FAIL: CREATE"));
@@ -3106,7 +3099,7 @@ gboolean alarm_manager_alarm_delete_all(AlarmManager *obj, GDBusMethodInvocation
        for (gs_iter = alarm_context.alarms; gs_iter != NULL;) {
                bool is_found = false;
                entry = gs_iter->data;
-               const char* tmp_appname = g_quark_to_string(entry->quark_app_unique_name);
+               const char* tmp_appname = entry->app_unique_name;
                SECURE_LOGD("Try to remove app_name[%s], alarm_id[%d]\n", tmp_appname, entry->alarm_id);
                if (tmp_appname && strncmp(app_name, tmp_appname, strlen(tmp_appname)) == 0) {
                        if (_remove_from_scheduled_alarm_list(uid, entry->alarm_id))
@@ -3126,7 +3119,7 @@ gboolean alarm_manager_alarm_delete_all(AlarmManager *obj, GDBusMethodInvocation
                        ALARM_MGR_LOG_PRINT("alarm_id[%d] is removed.", entry->alarm_id);
                        SECURE_LOGD("Removing is done. app_name[%s], alarm_id [%d]\n", tmp_appname, entry->alarm_id);
                        alarm_context.alarms = g_slist_remove(alarm_context.alarms, entry);
-                       g_free(entry);
+                       _release_alarm_info_t(entry);
                }
        }
 
@@ -3247,9 +3240,9 @@ gboolean alarm_manager_alarm_get_number_of_ids(AlarmManager *pObject, GDBusMetho
 
        for (gs_iter = alarm_context.alarms; gs_iter != NULL; gs_iter = g_slist_next(gs_iter)) {
                entry = gs_iter->data;
-               SECURE_LOGD("app_name=%s, quark_app_unique_name=%s", app_name, g_quark_to_string(entry->quark_app_unique_name));
+               SECURE_LOGD("app_name=%s, app_unique_name=%s", app_name, entry->app_unique_name);
                if (entry->uid == uid &&
-                               strncmp(app_name, g_quark_to_string(entry->quark_app_unique_name), strlen(app_name)) == 0) {
+                               strncmp(app_name, entry->app_unique_name, strlen(app_name)) == 0) {
                        (num_of_ids)++;
                        SECURE_LOGD("inc number of alarms of app (uid:%d, pid:%d, unique_name:%s) is %d.", uid, pid, app_name, num_of_ids);
                }
@@ -3301,7 +3294,7 @@ gboolean alarm_manager_alarm_get_list_of_ids(AlarmManager *pObject, GDBusMethodI
        for (gs_iter = alarm_context.alarms; gs_iter != NULL; gs_iter = g_slist_next(gs_iter)) {
                entry = gs_iter->data;
                if (entry->uid == uid &&
-                               strncmp(app_name, g_quark_to_string(entry->quark_app_unique_name), strlen(app_name)) == 0) {
+                               strncmp(app_name, (entry->app_unique_name), strlen(app_name)) == 0) {
                        g_variant_builder_add(builder, "i", entry->alarm_id);
                        index++;
                        SECURE_LOGE("called for alarmid(%d), but max_number_of_ids(%d) index %d.", entry->alarm_id, max_number_of_ids, index);
@@ -3342,13 +3335,13 @@ gboolean alarm_manager_alarm_get_appsvc_info(AlarmManager *pObject, GDBusMethodI
                entry = gs_iter->data;
                if (entry->uid == uid && entry->alarm_id == alarm_id) {
                        found = true;
-                       b_data = g_strdup(g_quark_to_string(entry->quark_bundle));
+                       b_data = g_strdup(entry->bundle);
                        break;
                }
        }
 
        if (found) {
-               if (b_data && strlen(b_data) == 4 && strncmp(b_data, "null", 4) == 0) {
+               if (b_data == NULL) {
                        ALARM_MGR_EXCEPTION_PRINT("The alarm(%d) is an regular alarm, not svc alarm.", alarm_id);
                        return_code = ERR_ALARM_INVALID_TYPE;
                }
@@ -3386,13 +3379,13 @@ gboolean alarm_manager_alarm_get_noti_info(AlarmManager *pObject, GDBusMethodInv
                entry = gs_iter->data;
                if (entry->uid == uid && entry->alarm_id == alarm_id) {
                        found = true;
-                       noti_data = strdup(g_quark_to_string(entry->quark_noti));
+                       noti_data = strdup(entry->noti);
                        break;
                }
        }
 
        if (found) {
-               if (noti_data && strlen(noti_data) == 4 && strncmp(noti_data, "null", 4) == 0) {
+               if (noti_data == NULL) {
                        ALARM_MGR_EXCEPTION_PRINT("The alarm(%d) is an regular alarm, not svc alarm.", alarm_id);
                        return_code = ERR_ALARM_INVALID_TYPE;
                }
@@ -3567,7 +3560,7 @@ gboolean alarm_manager_alarm_get_all_info(AlarmManager *pObject, GDBusMethodInvo
                        continue;
                ++index;
                SECURE_LOGD("#%d alarm id[%d] app_name[%s] duetime[%ld]",
-                       index, entry->alarm_id, g_quark_to_string(entry->quark_app_unique_name), entry->start);
+                               index, entry->alarm_id, entry->app_unique_name, entry->start);
 
                alarm_info_t *alarm_info = (alarm_info_t *) &(entry->alarm_info);
                alarm_mode_t *mode = &alarm_info->mode;
@@ -3582,11 +3575,11 @@ gboolean alarm_manager_alarm_get_all_info(AlarmManager *pObject, GDBusMethodInvo
                                (int)entry->end,
                                (int)entry->pid,
                                (bool)entry->global,
-                               (char *)g_quark_to_string(entry->quark_caller_pkgid),
-                               (char *)g_quark_to_string(entry->quark_callee_pkgid),
-                               (char *)g_quark_to_string(entry->quark_app_unique_name),
-                               (char *)g_quark_to_string(entry->quark_app_service_name),
-                               (char *)g_quark_to_string(entry->quark_dst_service_name),
+                               CHECK_NULL_STRING(entry->caller_pkgid),
+                               CHECK_NULL_STRING(entry->callee_pkgid),
+                               CHECK_NULL_STRING(entry->app_unique_name),
+                               CHECK_NULL_STRING(entry->app_service_name),
+                               CHECK_NULL_STRING(entry->dst_service_name),
                                mode->u_interval.day_of_week,
                                mode->repeat,
                                entry->alarm_info.alarm_type);
@@ -3644,9 +3637,10 @@ gboolean alarm_manager_alarm_set_global(AlarmManager *pObject, GDBusMethodInvoca
        } else {
                ALARM_MGR_LOG_PRINT("The alarm(%d) is found.", alarm_id);
 
-               callee_pkgid = (char *)g_quark_to_string(entry->quark_callee_pkgid);
-               if (strncmp(callee_pkgid, "null", strlen(callee_pkgid)) == 0)
-                       callee_pkgid = (char *)g_quark_to_string(entry->quark_app_service_name)+6;
+               if (entry->callee_pkgid == NULL)
+                       callee_pkgid = entry->app_service_name + 6;
+               else
+                       callee_pkgid = entry->callee_pkgid;
 
                ALARM_MGR_LOG_PRINT("The alarm pkgid : %s.", callee_pkgid);
 
@@ -4051,6 +4045,34 @@ static void __initialize()
        }
 }
 
+void _release_alarm_info_t(__alarm_info_t *entry)
+{
+       if (!entry)
+               return;
+
+       if (entry->caller_pkgid)
+               free(entry->caller_pkgid);
+       if (entry->callee_pkgid)
+               free(entry->callee_pkgid);
+       if (entry->app_unique_name)
+               free(entry->app_unique_name);
+       if (entry->app_service_name)
+               free(entry->app_service_name);
+       if (entry->app_service_name_mod)
+               free(entry->app_service_name_mod);
+       if (entry->dst_service_name)
+               free(entry->dst_service_name);
+
+       if (entry->dst_service_name_mod)
+               free(entry->dst_service_name_mod);
+       if (entry->bundle)
+               free(entry->bundle);
+       if (entry->noti)
+               free(entry->noti);
+
+       free(entry);
+}
+
 int main()
 {
        GMainLoop *mainloop = NULL;
index dd4495c..ffe7a0a 100644 (file)
@@ -79,8 +79,8 @@ typedef struct {
        alarm_cb_t alarm_handler;
        int handler_id;
        void *user_param;
-       GQuark quark_app_service_name;  /*dbus_service_name is converted to quark value*/
-       GQuark quark_app_service_name_mod;
+       char *app_service_name;
+       char *app_service_name_mod;
 } alarm_context_t;
 
 typedef union {
@@ -173,22 +173,17 @@ typedef struct {
        alarm_id_t alarm_id;
        uid_t uid;
        int pid;
-       GQuark quark_caller_pkgid;
-       GQuark quark_callee_pkgid;
-       GQuark quark_app_unique_name;   /*the fullpath of application's pid is
-               converted to quark value.*/
-       GQuark quark_app_service_name;  /*dbus_service_name is converted  to
-               quark value.app_service_name is a service name  of application
-               that creates alarm_info.*/
-       GQuark quark_app_service_name_mod;
-       GQuark quark_dst_service_name;  /*dbus_service_name is converted to
-               quark value.app_service_name is a service name  for
-               dst_service_name of alarm_create_extend().*/
-       GQuark quark_dst_service_name_mod;
+       char *caller_pkgid;
+       char *callee_pkgid;
+       char *app_unique_name;
+       char *app_service_name;
+       char *app_service_name_mod;
+       char *dst_service_name;
+       char *dst_service_name_mod;
        time_t due_time;
 
-       GQuark quark_bundle;    /*Bundle Content containing app-svc info*/
-       GQuark quark_noti;
+       char *bundle;
+       char *noti;
 
        alarm_info_t alarm_info;
 
@@ -231,6 +226,8 @@ typedef struct _bg_category_cb_info_t {
        bool has_bg;
 } bg_category_cb_info_t;
 
+void _release_alarm_info_t();
+
 time_t _alarm_next_duetime(__alarm_info_t *alarm_info);
 bool _alarm_schedule();
 bool _clear_scheduled_alarm_list();
@@ -262,4 +259,7 @@ void _update_db_for_disabled_alarm(alarm_id_t alarm_id, bool disabled_by_ups);
 #define ALARM_MGR_ASSERT_PRINT(FMT, ARG...) LOGE(FMT, ##ARG)
 #endif
 
+#define CHECK_NULL_STRING(x) x ? x : "null"
+#define STRDUP_WITH_NULLCMP(a) strcmp(a, "null") ? strdup(a) : NULL
+
 #endif /*_ALARM_INTERNAL_H*/
index 6d40278..e7f3d94 100644 (file)
@@ -202,7 +202,7 @@ bool _send_alarm_create(alarm_context_t context, alarm_info_t *alarm_info,
        int return_code = 0;
 
        /*TODO: Dbus bus name validation is must & will be added to avoid alarm-server crash*/
-       if (g_quark_to_string(context.quark_app_service_name) == NULL
+       if (context.app_service_name == NULL
                        && strlen(dst_service_name) == 4
                        && strncmp(dst_service_name, "null", 4) == 0) {
                ALARM_MGR_EXCEPTION_PRINT("Invalid arg. Provide valid destination or call alarmmgr_init()\n");
@@ -212,8 +212,8 @@ bool _send_alarm_create(alarm_context_t context, alarm_info_t *alarm_info,
        }
 
        if (!alarm_manager_call_alarm_create_sync((AlarmManager*)context.proxy,
-                               g_quark_to_string(context.quark_app_service_name),
-                               g_quark_to_string(context.quark_app_service_name_mod),
+                               context.app_service_name,
+                               context.app_service_name_mod,
                                alarm_info->start.year,
                                alarm_info->start.month,
                                alarm_info->start.day,
@@ -264,7 +264,7 @@ bool _send_alarm_create_periodic(alarm_context_t context, int interval, int is_r
        GError *error = NULL;
        int return_code = 0;
 
-       if (g_quark_to_string(context.quark_app_service_name) == NULL) {
+       if (context.app_service_name == NULL) {
                ALARM_MGR_EXCEPTION_PRINT("Invalid arg. Provide valid destination or call alarmmgr_init()\n");
                if (error_code)
                        *error_code = ERR_ALARM_INVALID_PARAM;
@@ -272,8 +272,8 @@ bool _send_alarm_create_periodic(alarm_context_t context, int interval, int is_r
        }
 
        if (!alarm_manager_call_alarm_create_periodic_sync((AlarmManager*)context.proxy,
-                               g_quark_to_string(context.quark_app_service_name),
-                               g_quark_to_string(context.quark_app_service_name_mod),
+                               context.app_service_name,
+                               context.app_service_name_mod,
                                interval, is_ref, method,
                                alarm_id, &return_code, NULL, &error)) {
                ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_create_periodic_sync()failed. alarm_id[%d], return_code[%d]",
index 7be1e5d..93626ec 100644 (file)
@@ -510,7 +510,7 @@ EXPORT_API int alarmmgr_init(const char *appid)
 
        if (b_initialized) {
                SECURE_LOGD("alarm was already initialized. app_service_name=%s",
-                               g_quark_to_string(alarm_context.quark_app_service_name));
+                               alarm_context.app_service_name);
                return ALARMMGR_RESULT_SUCCESS;
        }
 
@@ -564,8 +564,8 @@ EXPORT_API int alarmmgr_init(const char *appid)
                goto error;
        }
 
-       alarm_context.quark_app_service_name = g_quark_from_string(service_name);
-       alarm_context.quark_app_service_name_mod = g_quark_from_string(service_name_mod);
+       alarm_context.app_service_name = strdup(service_name);
+       alarm_context.app_service_name_mod = strdup(service_name_mod);
 
        b_initialized = true;
 
@@ -628,6 +628,12 @@ EXPORT_API void alarmmgr_fini()
                alarm_context.session_conn = NULL;
        }
 
+       if (alarm_context.app_service_name)
+               free(alarm_context.app_service_name);
+       if (alarm_context.app_service_name_mod)
+               free(alarm_context.app_service_name_mod);
+
+
        b_initialized = false;
        sub_initialized = false;