diff options
author | Jaeho Lee <jaeho81.lee@samsung.com> | 2012-02-10 16:10:53 +0900 |
---|---|---|
committer | Jaeho Lee <jaeho81.lee@samsung.com> | 2012-02-10 16:10:53 +0900 |
commit | 2b296bcfc7362d0d3fb35fb1bfb73e8c99022f53 (patch) | |
tree | 296d69e0a7550f104861057e36334281dea307bd /alarm-manager.c | |
parent | 6bbd514a7c41a2b3613e573dba99c5893e1c4aa3 (diff) | |
download | alarm-manager-2b296bcfc7362d0d3fb35fb1bfb73e8c99022f53.tar.gz alarm-manager-2b296bcfc7362d0d3fb35fb1bfb73e8c99022f53.tar.bz2 alarm-manager-2b296bcfc7362d0d3fb35fb1bfb73e8c99022f53.zip |
merged with private
Diffstat (limited to 'alarm-manager.c')
-rwxr-xr-x | alarm-manager.c | 85 |
1 files changed, 77 insertions, 8 deletions
diff --git a/alarm-manager.c b/alarm-manager.c index 70cfe46..0c8df2a 100755 --- a/alarm-manager.c +++ b/alarm-manager.c @@ -748,12 +748,6 @@ static bool __alarm_create_appsvc(alarm_info_t *alarm_info, alarm_id_t *alarm_id time(¤t_time); - ALARM_MGR_LOG_PRINT("[alarm-server]:pid=%d, app_unique_name=%s, " - "app_bundle_encoded_val=%s,c_due_time=%d", \ - pid, g_quark_to_string(__alarm_info->quark_app_unique_name), \ - g_quark_to_string(__alarm_info->quark_bundle), \ - alarm_context.c_due_time); - if (alarm_context.c_due_time < current_time) { ALARM_MGR_EXCEPTION_PRINT("Caution!! alarm_context.c_due_time " "(%d) is less than current time(%d)", alarm_context.c_due_time, @@ -1419,9 +1413,9 @@ static void __alarm_expired() else { ALARM_MGR_LOG_PRINT("Successfuly ran app svc\n"); - bundle_free(b); } } + bundle_free(b); } } @@ -2070,6 +2064,81 @@ gboolean alarm_manager_alarm_get_list_of_ids(void *pObject, int pid, return true; } +gboolean alarm_manager_alarm_get_appsvc_info(void *pObject, int pid, alarm_id_t alarm_id, + char *e_cookie, gchar **b_data, int *return_code) +{ + bool found = false; + + GSList *gs_iter = NULL; + __alarm_info_t *entry = NULL; + + guchar *cookie = NULL; + gsize size; + int retval = 0; + gid_t call_gid; + + ALARM_MGR_LOG_PRINT("called for pid(%d) and alarm_id(%d)\n", pid, + alarm_id); + + cookie = g_base64_decode(e_cookie, &size); + if (NULL == cookie) + { + if (return_code) + *return_code = ERR_ALARM_SYSTEM_FAIL; + ALARM_MGR_EXCEPTION_PRINT("Unable to decode cookie!!!\n"); + return true; + } + call_gid = security_server_get_gid("alarm"); + + ALARM_MGR_LOG_PRINT("call_gid : %d\n", call_gid); + + retval = security_server_check_privilege((const char *)cookie, call_gid); + if (retval < 0) { + if (retval == SECURITY_SERVER_API_ERROR_ACCESS_DENIED) { + ALARM_MGR_EXCEPTION_PRINT( + "%s", "access has been denied\n"); + } + ALARM_MGR_EXCEPTION_PRINT("%s", "Error has occurred\n"); + + if (return_code) + *return_code = ERR_ALARM_NO_PERMISSION; + + if (cookie) + g_free(cookie); + + return true; + } + + if (return_code) + *return_code = 0; + + for (gs_iter = alarm_context.alarms; gs_iter != NULL; + gs_iter = g_slist_next(gs_iter)) { + entry = gs_iter->data; + if (entry->alarm_id == alarm_id) { + found = true; + *b_data = g_strdup(g_quark_to_string(entry->quark_bundle)); + break; + } + } + + if (found) { + if ( *b_data && strlen(*b_data) == 4 && strncmp(*b_data,"null",4) == 0){ + ALARM_MGR_EXCEPTION_PRINT("Regular alarm,not svc alarm"); + if (return_code) + *return_code = ERR_ALARM_INVALID_TYPE; + } + } else { + if (return_code) + *return_code = ERR_ALARM_INVALID_ID; + } + + if (cookie) + g_free(cookie); + + return true; +} + gboolean alarm_manager_alarm_get_info(void *pObject, int pid, alarm_id_t alarm_id, int *start_year, int *start_month, int *start_day, @@ -2102,7 +2171,7 @@ gboolean alarm_manager_alarm_get_info(void *pObject, int pid, { ALARM_MGR_EXCEPTION_PRINT("alarm id(%d) was not found\n", alarm_id); - *return_code = ERR_ALARM_INVALID_PARAM; /*TODO: ERR_ALARM_INVALID_ID?*/ + *return_code = ERR_ALARM_INVALID_ID; } else { ALARM_MGR_LOG_PRINT("alarm was found\n"); *start_year = alarm_info->start.year; |