From e6eb8978053fc2f926282d98458e6ca24d64faed Mon Sep 17 00:00:00 2001 From: Yunjin Lee Date: Mon, 5 Dec 2016 15:10:38 +0900 Subject: [PATCH] Add missing whitelist app and Fix memory leak Change-Id: Ie5703b747d1db76af22d0ab8cadf9e6ccba28f28 Signed-off-by: Yunjin Lee --- capi/res/dbspace/mobile_preloaded.list | 1 + capi/src/privilege_manager.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/capi/res/dbspace/mobile_preloaded.list b/capi/res/dbspace/mobile_preloaded.list index bcffca8..8f3333b 100644 --- a/capi/res/dbspace/mobile_preloaded.list +++ b/capi/res/dbspace/mobile_preloaded.list @@ -82,3 +82,4 @@ User::Pkg::ug-bluetooth-efl User::Pkg::ug-setting-mobileap-efl User::Pkg::ug-setting-wifidirect-efl User::Pkg::wifi-efl-ug +User::Pkg::org.tizen.memo diff --git a/capi/src/privilege_manager.c b/capi/src/privilege_manager.c index 7d4ae49..895c844 100755 --- a/capi/src/privilege_manager.c +++ b/capi/src/privilege_manager.c @@ -328,6 +328,8 @@ int privilege_manager_verify_privilege(uid_t uid, const char *api_version, privi size_t new_size = snprintf(0, 0, "%s%s", noexist_message, message) + 1; char *tmp_message = realloc(noexist_message, new_size * sizeof(char)); TryReturn(tmp_message != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] noexist_message's realloc is failed."); + free(noexist_message); + noexist_message = NULL; noexist_message = tmp_message; strncat(noexist_message, message, strlen(message)); @@ -351,6 +353,8 @@ int privilege_manager_verify_privilege(uid_t uid, const char *api_version, privi size_t new_size = snprintf(0, 0, "%s%s", deprecated_message, message) + 1; char *tmp_message = realloc(deprecated_message, new_size * sizeof(char)); TryReturn(tmp_message != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] deprecated_message's realloc is failed."); + free(deprecated_message); + deprecated_message = NULL; deprecated_message = tmp_message; strncat(deprecated_message, message, strlen(message)); @@ -375,6 +379,8 @@ int privilege_manager_verify_privilege(uid_t uid, const char *api_version, privi size_t new_size = snprintf(0, 0, "%s%s", mismatched_message, message) + 1; char *tmp_message = realloc(mismatched_message, new_size * sizeof(char)); TryReturn(tmp_message != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] mismatched_message's realloc is failed."); + free(mismatched_message); + mismatched_message = NULL; mismatched_message = tmp_message; strncat(mismatched_message, message, strlen(message)); @@ -395,6 +401,8 @@ int privilege_manager_verify_privilege(uid_t uid, const char *api_version, privi size_t new_size = snprintf(0, 0, "%s%s", mismatched_message, message) + 1; char *tmp_message = realloc(mismatched_message, new_size * sizeof(char)); TryReturn(tmp_message, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] mismatched_message's realloc is failed."); + free(mismatched_message); + mismatched_message = NULL; mismatched_message = tmp_message; strncat(mismatched_message, message, strlen(message)); @@ -426,6 +434,8 @@ int privilege_manager_verify_privilege(uid_t uid, const char *api_version, privi size_t new_size = snprintf(0, 0, "%s[NO_EXIST_PRIVILEGE]|%s", message_list, noexist_message) + 1; char *tmp_message_list = realloc(message_list, new_size); TryReturn(tmp_message_list != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] message_list's realloc is failed."); + free(message_list); + message_list = NULL; message_list = tmp_message_list; strncat(message_list, "[NO_EXIST_PRIVILEGE]|", strlen("[NO_EXIST_PRIVILEGE]|")); strncat(message_list, noexist_message, strlen(noexist_message)); @@ -434,6 +444,8 @@ int privilege_manager_verify_privilege(uid_t uid, const char *api_version, privi size_t new_size = snprintf(0, 0, "%s[DEPRECATED_PRIVILEGE]|%s", message_list, deprecated_message) + 1; char *tmp_message_list = realloc(message_list, new_size); TryReturn(tmp_message_list != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] message_list's realloc is failed."); + free(message_list); + message_list = NULL; message_list = tmp_message_list; strncat(message_list, "[DEPRECATED_PRIVILEGE]|", strlen("[DEPRECATED_PRIVILEGE]|")); strncat(message_list, deprecated_message, strlen(deprecated_message)); @@ -442,6 +454,8 @@ int privilege_manager_verify_privilege(uid_t uid, const char *api_version, privi size_t new_size = snprintf(0, 0, "%s[MISMATCHED_PRIVILEGE_LEVEL]|%s", message_list, mismatched_message) + 1; char *tmp_message_list = realloc(message_list, new_size); TryReturn(tmp_message_list != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] message_list's realloc is failed."); + free(message_list); + message_list = NULL; message_list = tmp_message_list; strncat(message_list, "[MISMATCHED_PRIVILEGE_LEVEL]|", strlen("[MISMATCHED_PRIVILEGE_LEVEL]|")); strncat(message_list, mismatched_message, strlen(mismatched_message)); @@ -450,6 +464,8 @@ int privilege_manager_verify_privilege(uid_t uid, const char *api_version, privi char* tmp_message_list = realloc(message_list, total_size); TryReturn(tmp_message_list != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] message_list's realloc is failed."); message_list = tmp_message_list; + free(message_list); + message_list = NULL; strncat(message_list, newline, strlen(newline)); *error_message = strdup(message_list); TryReturn(error_message != NULL, ret_val = PRVMGR_ERR_OUT_OF_MEMORY; goto FINISH, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] error_message's strdup is failed."); -- 2.7.4