In case of partial-rw requset, skip labeling of RO paths. 66/102166/5
authorjongmyeong ko <jongmyeong.ko@samsung.com>
Mon, 5 Dec 2016 06:24:08 +0000 (22:24 -0800)
committerjongmyeongko <jongmyeong.ko@samsung.com>
Mon, 5 Dec 2016 07:51:50 +0000 (16:51 +0900)
This reverts commit 1d12b640426570bd357d43cbf941377aa0fcf961.

Change-Id: I7d0c14cc54c14dfb1668c255d5cee127f32d36f8
Signed-off-by: jongmyeongko <jongmyeong.ko@samsung.com>
src/common/security_registration.cc
src/common/security_registration.h
src/common/step/filesystem/step_create_per_user_storage_directories.cc
src/common/step/security/step_register_security.cc

index df29c18..8aff024 100644 (file)
@@ -155,7 +155,7 @@ bool PrepareRequest(const std::string& app_id, const std::string& pkg_id,
 
 bool PreparePathRequest(const std::string& pkg_id,
     const boost::filesystem::path& path, uid_t uid, path_req* req,
-    bool readonly, std::string* error_message) {
+    bool is_readonly_pkg, std::string* error_message) {
   if (pkg_id.empty() || path.empty()) {
     LOG(ERROR) << "Pkgid or path is empty. Both values must be set";
     return false;
@@ -190,7 +190,7 @@ bool PreparePathRequest(const std::string& pkg_id,
     return false;
   }
   // When registering skel dir on global installation mode
-  if (type == SM_APP_INSTALL_PRELOADED && !readonly)
+  if (type == SM_APP_INSTALL_PRELOADED && !is_readonly_pkg)
     type = SM_APP_INSTALL_GLOBAL;
 
   error = security_manager_path_req_set_install_type(req, type);
@@ -365,7 +365,7 @@ bool UnregisterSecurityContextForPkgId(const std::string &pkg_id,
 
 bool RegisterSecurityContextForPath(const std::string &pkg_id,
     const boost::filesystem::path& path, uid_t uid,
-    bool readonly, std::string* error_message) {
+    bool is_readonly_pkg, std::string* error_message) {
   path_req* req;
   int error = security_manager_path_req_new(&req);
   if (error != SECURITY_MANAGER_SUCCESS) {
@@ -378,7 +378,8 @@ bool RegisterSecurityContextForPath(const std::string &pkg_id,
     return false;
   }
 
-  if (!PreparePathRequest(pkg_id, path, uid, req, readonly, error_message)) {
+  if (!PreparePathRequest(pkg_id, path, uid, req, is_readonly_pkg,
+                          error_message)) {
     LOG(ERROR) << "Failed while preparing security_manager_app_inst_req";
     security_manager_path_req_free(req);
     return false;
index 0276984..8c97ea0 100644 (file)
@@ -20,47 +20,6 @@ namespace common_installer {
  * Adapter interface for external Security module.
  *
  * Adapter interface for external Security module used for registering
- * application to security context
- *
- * \param app_id id of given application
- * \param pkg_id id of given package
- * \param author_id unique author id of given package
- * \param api_version api-version of given package
- * \param path path of installed package
- * \param uid uid
- * \param privileges pointer to manifest structure
- * \param cross_app_rules true if n-to-n smack rules should be generated
- *                        apps (should be set for hybrid applications).
- * \param error_message extra/detailed error message
- *
- * \return true if success
- */
-bool RegisterSecurityContext(const std::string& app_id,
-    const std::string& pkg_id, const std::string& author_id,
-    const std::string& api_version, const boost::filesystem::path& path,
-    uid_t uid, const std::vector<std::string>& privileges,
-    bool cross_app_rules, std::string* error_message);
-
-/**
- * Adapter interface for external Security module.
- *
- * Adapter interface for external Security module used for unregistering
- * application from security context
- *
- * \param app_id id of given application
- * \param pkg_id id of given package
- * \param uid uid
- * \param error_message extra/detailed error message
- *
- * \return true if success
- */
-bool UnregisterSecurityContext(const std::string& app_id,
-    const std::string& pkg_id, uid_t uid, std::string* error_message);
-
-/**
- * Adapter interface for external Security module.
- *
- * Adapter interface for external Security module used for registering
  * package to security context
  *
  * \param pkg_id pkgid of given package
@@ -98,35 +57,20 @@ bool UnregisterSecurityContextForManifest(const std::string& pkg_id, uid_t uid,
 /**
  * Adapter interface for external Security module.
  *
- * Adapter interface for external Security module used for unregistering
- * package from security context
- *
- * \param pkg_id pkgid of given package
- * \param uid uid
- * \param error_message extra/detailed error message
- *
- * \return true if success
- */
-bool UnregisterSecurityContextForPkgId(const std::string& pkg_id, uid_t uid,
-    std::string* error_message);
-
-/**
- * Adapter interface for external Security module.
- *
  * Adapter interface for external Security module used for registering
  * package path to security context
  *
  * \param pkg_id pkgid of given package
  * \param path path for registering
  * \param uid uid
- * \param readonly RO package flag
+ * \param is_readonly_pkg RO package flag
  * \param error_message extra/detailed error message
  *
  * \return true if success
  */
 bool RegisterSecurityContextForPath(const std::string &pkg_id,
     const boost::filesystem::path& path, uid_t uid,
-    bool readonly, std::string* error_message);
+    bool is_readonly_pkg, std::string* error_message);
 
 }  // namespace common_installer
 
index cd5e1e0..51abde8 100644 (file)
@@ -36,10 +36,13 @@ common_installer::Step::Status StepCreatePerUserStorageDirectories::process() {
       break;
     }
   }
-  if (!common_installer::CreateSkelDirectories(package_id,
-      str_ver, trusted, shareddata, context_->is_readonly_package.get())) {
-    LOG(ERROR) << "Failed to create skel dirs";
-    return Status::APP_DIR_ERROR;
+  // Now, /etc/skel is RO mounted region, so we should skip the creation.
+  if (!context_->partial_rw.get()) {
+    if (!common_installer::CreateSkelDirectories(package_id,
+        str_ver, trusted, shareddata, context_->is_readonly_package.get())) {
+      LOG(ERROR) << "Failed to create skel dirs";
+      return Status::APP_DIR_ERROR;
+    }
   }
 
   if (!CopyUserDirectories(package_id)) {
index b4e9039..4cd8439 100644 (file)
@@ -49,6 +49,8 @@ Step::Status StepRegisterSecurity::process() {
     }
     return Status::SECURITY_ERROR;
   }
+  if (context_->partial_rw.get())
+    return Status::OK;
   if (!RegisterSecurityContextForPath(
       context_->pkgid.get(), context_->pkg_path.get(), context_->uid.get(),
       context_->is_readonly_package.get(), &error_message)) {