diff options
-rw-r--r-- | src/common/security_registration.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/common/security_registration.cc b/src/common/security_registration.cc index aab8a670..fe0a1b12 100644 --- a/src/common/security_registration.cc +++ b/src/common/security_registration.cc @@ -9,6 +9,7 @@ #include <utility> #include <vector> +#include <algorithm> #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<std::string> 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; } |