Fix resource leak 59/173359/1
authorYunjin Lee <yunjin-.lee@samsung.com>
Wed, 21 Mar 2018 02:40:55 +0000 (11:40 +0900)
committerYunjin Lee <yunjin-.lee@samsung.com>
Wed, 21 Mar 2018 02:40:55 +0000 (11:40 +0900)
Change-Id: I857648379836299aebed321f2f68ae77ddd653e0
Signed-off-by: Yunjin Lee <yunjin-.lee@samsung.com>
capi/src/privilege_manager.c

index 7e3cb7a..2d81cb2 100755 (executable)
@@ -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));