Fix registering provides-appdefined-privileges 02/171902/2
authorSangyoon Jang <jeremy.jang@samsung.com>
Thu, 8 Mar 2018 05:38:11 +0000 (14:38 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Thu, 8 Mar 2018 06:03:02 +0000 (15:03 +0900)
security-manager manages security context per app, not package.
And it doesn't allow two apps to define same provides-appdefined-privileges.

Change-Id: I26163da2b0cc11ddfee0924838067f26ccc84829
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/common/security_registration.cc

index 5c1eace..e9826c3 100644 (file)
@@ -341,11 +341,14 @@ bool RegisterSecurityContextForManifest(
     }
     list_index++;
     bool is_web_priv = strcmp(app->type, "webapp") == 0;
+    bool is_mainapp = strcmp(app->mainapp, "true") == 0;
     if (!PrepareRequest(app->appid, pkg_id, cert_info->author_id.get(),
         app->api_version, path, uid,
         is_web_priv ? wgt_priv_vec : tpk_priv_vec,
         is_web_priv ? wgt_appdef_vec : tpk_appdef_vec,
-        is_web_priv ? wgt_provides_appdef_vec : tpk_provides_appdef_vec,
+        is_mainapp ? (is_web_priv ? wgt_provides_appdef_vec :
+                                    tpk_provides_appdef_vec) :
+                     AppDefinedPrivInfo(),
         req, cross_app_rules, error_message)) {
       LOG(ERROR) << "Failed while preparing security_manager_app_inst_req";
       security_manager_app_inst_req_free(req);