From: Yunjin Lee Date: Wed, 21 Mar 2018 02:40:55 +0000 (+0900) Subject: Fix resource leak X-Git-Tag: accepted/tizen/unified/20180323.134352~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ccb7e94da6e3dce590cbfc9d324510bf3b7c6489;p=platform%2Fcore%2Fsecurity%2Fprivilege-checker.git Fix resource leak Change-Id: I857648379836299aebed321f2f68ae77ddd653e0 Signed-off-by: Yunjin Lee --- diff --git a/capi/src/privilege_manager.c b/capi/src/privilege_manager.c index 7e3cb7a..2d81cb2 100755 --- a/capi/src/privilege_manager.c +++ b/capi/src/privilege_manager.c @@ -261,18 +261,20 @@ int privilege_manager_verify_privilege(uid_t uid, const char *api_version, privi for (l = privilege_list; l != NULL; l = l->next) { int privilege_level_id = PRVMGR_PACKAGE_VISIBILITY_PUBLIC; char *privilege_name = (char *)l->data; + if (message != NULL) { + free(message); + message = NULL; + } if (strstr(privilege_name, "/internal/") != NULL) { _LOGE("[PRVMGR_ERR_INVALID_PRIVILEGE] Invalid privilege name %s", privilege_name); + if (mismatched_message != NULL) + free(mismatched_message); + g_list_free_full(valid_privilege_list, __free_privilege_list); return PRVMGR_ERR_INVALID_PRIVILEGE; } ret = __privilege_manager_check_privilege_list(privilege_name, valid_privilege_list, &privilege_level_id); - if (message != NULL) { - free(message); - message = NULL; - } - if (ret == PRVMGR_ERR_NONE) { if (visibility < (unsigned int)privilege_level_id) { _LOGD("[MISMATCHED_PRIVILEGE_LEVEL] %s %s requires certificate level: %s and current certificate level: %s. Use at least certificate with signature level %s.", __get_package_type_string(package_type), privilege_name, __get_privilege_level_string(privilege_level_id), __get_privilege_level_string(visibility), __get_privilege_level_string(privilege_level_id));