diff options
author | Venkatesha Sarpangala <sarpangala.v@samsung.com> | 2017-03-19 14:43:01 +0530 |
---|---|---|
committer | Jiwoong Im <jiwoong.im@samsung.com> | 2017-03-20 03:16:22 -0700 |
commit | f87e8e4897beed78f891709aadd302b033e0562b (patch) | |
tree | b278e42abb429e141f2b417c1e0eb70cd5879ee1 | |
parent | 50da8fdeb3309d24009750a971fe62aafa4a5dbe (diff) | |
download | alarm-manager-f87e8e4897beed78f891709aadd302b033e0562b.tar.gz alarm-manager-f87e8e4897beed78f891709aadd302b033e0562b.tar.bz2 alarm-manager-f87e8e4897beed78f891709aadd302b033e0562b.zip |
Fix crash issue
- API caller crashed due to null pointer dereference
- Fix by adding Null check before dereference
Change-Id: I885e4b2cb7b8c8d79656e95abc5a9dcfa1d1d7f6
Signed-off-by: Venkatesha Sarpangala <sarpangala.v@samsung.com>
(cherry picked from commit 51d21ea2c568041a91a003bebc0af7dc518e8ec7)
-rw-r--r-- | src/alarm-lib-stub.c | 168 |
1 files changed, 104 insertions, 64 deletions
diff --git a/src/alarm-lib-stub.c b/src/alarm-lib-stub.c index 0b983db..089a1b6 100644 --- a/src/alarm-lib-stub.c +++ b/src/alarm-lib-stub.c @@ -103,14 +103,16 @@ bool _send_alarm_create_noti(alarm_context_t context, alarm_info_t *alarm_info, /* error_code should be set */ ALARM_MGR_EXCEPTION_PRINT( "alarm_manager_call_alarm_create_noti_sync()failed. alarm_id[%d], return_code[%d].", alarm_id, return_code); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } return false; } @@ -168,14 +170,16 @@ bool _send_alarm_create_appsvc(alarm_context_t context, alarm_info_t *alarm_info /* error_code should be set */ ALARM_MGR_EXCEPTION_PRINT( "alarm_manager_call_alarm_create_appsvc_sync()failed. alarm_id[%d], return_code[%d].", alarm_id, return_code); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } return false; } @@ -229,14 +233,16 @@ bool _send_alarm_create(alarm_context_t context, alarm_info_t *alarm_info, /* error_code should be set */ ALARM_MGR_EXCEPTION_PRINT( "alarm_manager_call_alarm_create_sync()failed. alarm_id[%d], return_code[%d]", alarm_id, return_code); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } return false; } @@ -269,14 +275,16 @@ bool _send_alarm_create_periodic(alarm_context_t context, int interval, int is_r alarm_id, &return_code, NULL, &error)) { ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_create_periodic_sync()failed. alarm_id[%d], return_code[%d]", alarm_id, return_code); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } return false; } @@ -301,14 +309,16 @@ bundle *_send_alarm_get_appsvc_info(alarm_context_t context, alarm_id_t alarm_id /* g_dbus_proxy_call_sync error */ /*error_code should be set */ ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_get_appsvc_info_sync() failed. alarm_id[%d], return_code[%d].", alarm_id, return_code); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } if (b_data) g_free(b_data); @@ -345,14 +355,16 @@ notification_h _send_alarm_get_noti_info(alarm_context_t context, alarm_id_t ala /* g_dbus_proxy_call_sync error */ /*error_code should be set */ ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_get_appsvc_info_sync() failed. alarm_id[%d], return_code[%d].", alarm_id, return_code); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } if (noti_data) g_free(noti_data); @@ -397,14 +409,16 @@ bool _send_alarm_set_rtc_time(alarm_context_t context, alarm_date_t *time, int * /* g_dbus_proxy_call_sync error */ /*error_code should be set */ ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_set_rtc_time() failed. return_code[%d]", return_code); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } return false; } @@ -428,14 +442,16 @@ bool _send_alarm_delete(alarm_context_t context, alarm_id_t alarm_id, int *error /* g_dbus_proxy_call_sync error */ /*error_code should be set */ ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_delete_sync() failed. alarm_id[%d], return_code[%d]", alarm_id, return_code); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } return false; } @@ -459,14 +475,16 @@ bool _send_alarm_delete_all(alarm_context_t context, int *error_code) /* g_dbus_proxy_call_sync error */ /*error_code should be set */ ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_delete_all_sync() failed. return_code[%d]", return_code); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } return false; } @@ -495,14 +513,16 @@ bool _send_alarm_get_list_of_ids(alarm_context_t context, int maxnum_of_ids, /*error_code should be set */ ALARM_MGR_EXCEPTION_PRINT( "alarm_manager_call_alarm_get_list_of_ids_sync() failed by dbus. alarm_id[%d], return_code[%d]\n", alarm_id, return_code); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } return false; } @@ -537,17 +557,19 @@ bool _send_alarm_get_number_of_ids(alarm_context_t context, int *num_of_ids, /* g_dbus_proxy_call_sync error */ /* error_code should be set */ ALARM_MGR_EXCEPTION_PRINT( - "alarm_manager_call_alarm_get_number_of_ids_sync() failed by dbus. return_code[%d], return_code[%s].", - return_code, error->message); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + "alarm_manager_call_alarm_get_number_of_ids_sync() failed by dbus. return_code[%d]", + return_code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } return false; } @@ -579,14 +601,16 @@ bool _send_alarm_get_info(alarm_context_t context, alarm_id_t alarm_id, /* error_code should be set */ ALARM_MGR_EXCEPTION_PRINT( "alarm_manager_call_alarm_get_info_sync() failed by dbus. alarm_id[%d], return_code[%d]\n", alarm_id, return_code); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } return false; } @@ -612,14 +636,16 @@ bool _send_alarm_get_next_duetime(alarm_context_t context, /*error_code should be set */ ALARM_MGR_EXCEPTION_PRINT( "alarm_manager_call_alarm_get_next_duetime_sync() failed by dbus. alarm_id[%d], return_code[%d]\n", alarm_id, return_code); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } return false; } @@ -640,15 +666,17 @@ bool _send_alarm_get_all_info(alarm_context_t context, char ** db_path, int *err if (!alarm_manager_call_alarm_get_all_info_sync((AlarmManager*)context.proxy, db_path, &return_code, NULL, &error)) { /*g_dbus_proxy_call_sync error */ /*error_code should be set */ - ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_get_all_info_sync() failed by dbus. return_code[%d][%s]", return_code, error->message); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_get_all_info_sync() failed by dbus. return_code[%d]", return_code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } return false; } @@ -698,8 +726,10 @@ static void _alarm_set_time_cb(GObject *source_object, GAsyncResult *res, if (!alarm_manager_call_alarm_set_time_finish((AlarmManager *)func_data->proxy, (gint *)&return_code, res, &error)) { - ALARM_MGR_EXCEPTION_PRINT("dbus error message: %s", error->message); - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("dbus error message: %s", error->message); + g_error_free(error); + } return_code = ERR_ALARM_SYSTEM_FAIL; } @@ -734,15 +764,17 @@ bool _send_alarm_set_time_with_propagation_delay(alarm_context_t context, unsign if (!alarm_manager_call_alarm_set_time_with_propagation_delay_sync((AlarmManager*)context.proxy, new_sec, new_nsec, req_sec, req_nsec, &return_code, NULL, &error)) { /*g_dbus_proxy_call_sync error */ /*error_code should be set */ - ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_set_time_with_propagation_delay_sync() failed by dbus. return_code[%d][%s]", return_code, error->message); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_set_time_with_propagation_delay_sync() failed by dbus. return_code[%d]", return_code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } return false; } @@ -765,8 +797,10 @@ static void _alarm_set_time_with_delay_cb(GObject *source_object, GAsyncResult * if (!alarm_manager_call_alarm_set_time_with_propagation_delay_finish((AlarmManager *)func_data->proxy, (gint *)&return_code, res, &error)) { - ALARM_MGR_EXCEPTION_PRINT("dbus error message: %s", error->message); - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("dbus error message: %s", error->message); + g_error_free(error); + } return_code = ERR_ALARM_SYSTEM_FAIL; } @@ -802,15 +836,17 @@ bool _send_alarm_set_timezone(alarm_context_t context, char *tzpath_str, int *er if (!alarm_manager_call_alarm_set_timezone_sync((AlarmManager*)context.proxy, tzpath_str, &return_code, NULL, &error)) { /*g_dbus_proxy_call_sync error */ /*error_code should be set */ - ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_set_timezone_sync() failed by dbus. return_code[%d][%s]", return_code, error->message); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_set_timezone_sync() failed by dbus. return_code[%d]", return_code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } return false; } @@ -831,15 +867,17 @@ bool _send_alarm_set_global(alarm_context_t context, const alarm_id_t alarm_id, if (!alarm_manager_call_alarm_set_global_sync((AlarmManager *)context.proxy, alarm_id, global, &return_code, NULL, &error)) { /*g_dbus_proxy_call_sync error */ /*error_code should be set */ - ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_set_global_sync() failed by dbus. return_code[%d][%s]", return_code, error->message); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_set_global_sync() failed by dbus. return_code[%d]", return_code); if (error_code) { - if (error->code == G_DBUS_ERROR_ACCESS_DENIED) + if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } return false; } @@ -861,15 +899,17 @@ bool _send_alarm_get_global(alarm_context_t context, const alarm_id_t alarm_id, if (!alarm_manager_call_alarm_get_global_sync((AlarmManager *)context.proxy, alarm_id, (gboolean *)&_global, &return_code, NULL, &error)) { /*g_dbus_proxy_call_sync error */ /*error_code should be set */ - ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_get_global_sync() failed by dbus. return_code[%d][%s]", return_code, error->message); - ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + ALARM_MGR_EXCEPTION_PRINT("alarm_manager_call_alarm_get_global_sync() failed by dbus. return_code[%d]", return_code); if (error_code) { if (error->code == G_DBUS_ERROR_ACCESS_DENIED) *error_code = ERR_ALARM_NO_PERMISSION; else *error_code = ERR_ALARM_SYSTEM_FAIL; } - g_error_free(error); + if (error) { + ALARM_MGR_EXCEPTION_PRINT("error->message is %s(%d)", error->message, error->code); + g_error_free(error); + } return false; } |