diff options
author | Jiwoong Im <jiwoong.im@samsung.com> | 2017-04-19 09:11:37 +0900 |
---|---|---|
committer | Jiwoong Im <jiwoong.im@samsung.com> | 2017-04-20 10:42:14 +0900 |
commit | d12e85cdd7c43bec3ff9f4859232f1e0a03e63ee (patch) | |
tree | 3e6b8397d98d9fc6e8c7879b5b0dff56cd5b0734 | |
parent | 77f8a460d4bb17ec946a27be40228fe2e5030587 (diff) | |
download | alarm-manager-submit/tizen_3.0_common/20170508.091735.tar.gz alarm-manager-submit/tizen_3.0_common/20170508.091735.tar.bz2 alarm-manager-submit/tizen_3.0_common/20170508.091735.zip |
Fix memory leaksubmit/tizen_3.0_common/20170508.091735submit/tizen_3.0/20170426.044950submit/tizen_3.0-common/20170508.091535submit/tizen_3.0-common/20170508.081301submit/tizen_3.0-common/20170508.080135accepted/tizen/3.0/wearable/20170508.050428accepted/tizen/3.0/tv/20170508.050410accepted/tizen/3.0/mobile/20170508.050349accepted/tizen/3.0/ivi/20170508.050438accepted/tizen/3.0/common/20170508.153041
- Fix memory leak in sqlite3 error_message
- Add missing sqlite3_stmt in _load_alarms_from_registry
Change-Id: Idbcca3d50d30a0d7848b728cb07cd4ccfdd57879
Signed-off-by: Jiwoong Im <jiwoong.im@samsung.com>
-rw-r--r-- | alarm-manager-registry.c | 23 | ||||
-rw-r--r-- | alarm-manager.c | 13 | ||||
-rw-r--r-- | include/alarm-internal.h | 2 |
3 files changed, 23 insertions, 15 deletions
diff --git a/alarm-manager-registry.c b/alarm-manager-registry.c index 1e8d7d3..0554c0a 100644 --- a/alarm-manager-registry.c +++ b/alarm-manager-registry.c @@ -46,7 +46,7 @@ extern sqlite3 *alarmmgr_db; bool _save_alarms(__alarm_info_t *__alarm_info); bool _update_alarms(__alarm_info_t *__alarm_info); bool _delete_alarms(alarm_id_t alarm_id); -bool _load_alarms_from_registry(void); +void _load_alarms_from_registry(void); bool _save_alarms(__alarm_info_t *__alarm_info) { @@ -100,6 +100,7 @@ bool _save_alarms(__alarm_info_t *__alarm_info) 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); + sqlite3_free(error_message); sqlite3_free(query); return false; } @@ -159,6 +160,7 @@ bool _update_alarms(__alarm_info_t *__alarm_info) 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); + sqlite3_free(error_message); sqlite3_free(query); return false; } @@ -174,6 +176,7 @@ bool _delete_alarms(alarm_id_t alarm_id) 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); + sqlite3_free(error_message); sqlite3_free(query); return false; } @@ -182,7 +185,7 @@ bool _delete_alarms(alarm_id_t alarm_id) return true; } -bool _load_alarms_from_registry() +void _load_alarms_from_registry() { int i = 0; int col_idx; @@ -207,7 +210,7 @@ bool _load_alarms_from_registry() if (SQLITE_OK != sqlite3_prepare(alarmmgr_db, query, strlen(query), &stmt, &tail)) { ALARM_MGR_EXCEPTION_PRINT("sqlite3_prepare() is failed."); - return false; + return; } for (i = 0; SQLITE_ROW == sqlite3_step(stmt); i++) { @@ -216,7 +219,7 @@ bool _load_alarms_from_registry() if (G_UNLIKELY(__alarm_info == NULL)) { ALARM_MGR_EXCEPTION_PRINT("Memory allocation failed."); - return false; + goto done; } alarm_info = (alarm_info_t *) &(__alarm_info->alarm_info); start = &alarm_info->start; @@ -287,15 +290,12 @@ bool _load_alarms_from_registry() alarm_context.alarms = g_slist_append(alarm_context.alarms, __alarm_info); } } - - +done: _alarm_schedule(); - if (SQLITE_OK != sqlite3_finalize(stmt)) { + if (sqlite3_finalize(stmt) != SQLITE_OK) ALARM_MGR_EXCEPTION_PRINT("sqlite3_finalize() is failed."); - return false; - } - return true; + return; } void _update_db_for_disabled_alarm(alarm_id_t alarm_id, bool disabled) @@ -307,8 +307,7 @@ void _update_db_for_disabled_alarm(alarm_id_t alarm_id, bool disabled) if (SQLITE_OK != sqlite3_exec(alarmmgr_db, query, NULL, NULL, &error_message)) { SECURE_LOGE("Failed to update the DB table. error message = %s", error_message); - if (error_message) - sqlite3_free(error_message); + sqlite3_free(error_message); } sqlite3_free(query); diff --git a/alarm-manager.c b/alarm-manager.c index dbe69c4..2950689 100644 --- a/alarm-manager.c +++ b/alarm-manager.c @@ -652,6 +652,7 @@ gboolean __update_relative_alarms(gpointer user_data) if (sqlite3_exec(alarmmgr_db, "BEGIN EXCLUSIVE", NULL, NULL, &error_message) != SQLITE_OK) { SECURE_LOGE("sqlite3_exec() is failed. error message = %s", error_message); + sqlite3_free(error_message); return false; } @@ -664,6 +665,7 @@ gboolean __update_relative_alarms(gpointer user_data) if (sqlite3_exec(alarmmgr_db, "COMMIT", NULL, NULL, &error_message) != SQLITE_OK) { SECURE_LOGE("sqlite3_exec() is failed. error message = %s", error_message); + sqlite3_free(error_message); return false; } @@ -1243,6 +1245,7 @@ static bool __alarm_set_global_to_db(__alarm_info_t *alarm_info, bool global) 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); sqlite3_free(query); + sqlite3_free(error_message); return false; } @@ -3465,12 +3468,16 @@ gboolean alarm_manager_alarm_get_all_info(AlarmManager *pObject, GDBusMethodInvo } /* Drop a table */ - if (sqlite3_exec(alarmmgr_tool_db, query_for_deleting_table, NULL, NULL, &error_message) != SQLITE_OK) + if (sqlite3_exec(alarmmgr_tool_db, query_for_deleting_table, NULL, NULL, &error_message) != SQLITE_OK) { ALARM_MGR_EXCEPTION_PRINT("Deleting the table is failed. error message = %s", error_message); + sqlite3_free(error_message); + } /* Create a table if it does not exist */ if (sqlite3_exec(alarmmgr_tool_db, query_for_creating_table, NULL, NULL, &error_message) != SQLITE_OK) { ALARM_MGR_EXCEPTION_PRINT("Creating the table is failed. error message = %s", error_message); + sqlite3_free(error_message); + sqlite3_close(alarmmgr_tool_db); return_code = ERR_ALARM_SYSTEM_FAIL; goto done; } @@ -3507,8 +3514,10 @@ gboolean alarm_manager_alarm_get_all_info(AlarmManager *pObject, GDBusMethodInvo mode->repeat, entry->alarm_info.alarm_type); - if (sqlite3_exec(alarmmgr_tool_db, query, NULL, NULL, &error_message) != SQLITE_OK) + if (sqlite3_exec(alarmmgr_tool_db, query, NULL, NULL, &error_message) != SQLITE_OK) { SECURE_LOGE("sqlite3_exec() is failed. error message = %s", error_message); + sqlite3_free(error_message); + } sqlite3_free(query); } diff --git a/include/alarm-internal.h b/include/alarm-internal.h index cdb3a3f..eb892fe 100644 --- a/include/alarm-internal.h +++ b/include/alarm-internal.h @@ -152,7 +152,7 @@ bool _send_alarm_get_next_duetime(alarm_context_t context, alarm_id_t alarm_id, bool _send_alarm_get_all_info(alarm_context_t context, char ** db_path, int *error_code); bool _send_alarm_reset(alarm_context_t context, int *error_code); bool _remove_from_scheduled_alarm_list(uid_t uid, alarm_id_t alarm_id); -bool _load_alarms_from_registry(); +void _load_alarms_from_registry(); bundle *_send_alarm_get_appsvc_info(alarm_context_t context, alarm_id_t alarm_id, int *error_code); notification_h _send_alarm_get_noti_info(alarm_context_t context, alarm_id_t alarm_id, int *error_code); bool _send_alarm_set_rtc_time(alarm_context_t context, alarm_date_t *time, int *error_code); |