From 1e2d9407f3823ced36e84aadb1cb635ebfde8595 Mon Sep 17 00:00:00 2001 From: WonYoung Choi Date: Fri, 11 Sep 2015 23:38:11 +0900 Subject: [PATCH] Sort privilege list before call security-manager function. SecurityManager considers the privilege list is always sorted. Change-Id: Ib5a9632e3d1d310d49aa55d29acca16ea4e3d670 --- src/common/security_registration.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/common/security_registration.cc b/src/common/security_registration.cc index aab8a67..fe0a1b1 100644 --- a/src/common/security_registration.cc +++ b/src/common/security_registration.cc @@ -9,6 +9,7 @@ #include #include +#include #include "common/utils/clist_helpers.h" #include "common/utils/logging.h" @@ -63,16 +64,25 @@ bool PrepareRequest(const std::string& app_id, const std::string& pkg_id, } if (manifest) { + std::vector priv_vec; + privileges_x *privileges = nullptr; PKGMGR_LIST_MOVE_NODE_TO_HEAD(manifest->privileges, privileges); for (; privileges != nullptr; privileges = privileges->next) { privilege_x* priv = nullptr; PKGMGR_LIST_MOVE_NODE_TO_HEAD(privileges->privilege, priv); for (; priv != nullptr; priv = priv->next) { - security_manager_app_inst_req_add_privilege(req, priv->text); + priv_vec.push_back(priv->text); } } + + // privileges should be sorted. + std::sort(priv_vec.begin(), priv_vec.end()); + for (auto& priv : priv_vec) { + security_manager_app_inst_req_add_privilege(req, priv.c_str()); + } } + return true; } -- 2.7.4