Skip the security registration if it is unnecessary
[platform/core/appfw/app-installers.git] / src / common / step / security / step_recover_security.cc
index ffc031e..ae59eaa 100644 (file)
@@ -25,6 +25,12 @@ bool StepRecoverSecurity::Check(bool is_update) {
 Step::Status StepRecoverSecurity::RecoveryNew() {
   if (!Check(false))
     return Status::OK;
+  recovery::RecoveryFile* recovery_file =
+      context_->recovery_info.get().recovery_file.get();
+  if (!recovery_file->security_operation_done()) {
+    LOG(DEBUG) << "security_operation_done false skip recover security";
+    return Status::OK;
+  }
   std::string error_message;
   if (!context_->manifest_data.get()) {
     if (!UnregisterSecurityContextForPkgId(context_->pkgid.get(),
@@ -54,6 +60,12 @@ Step::Status StepRecoverSecurity::RecoveryUpdate() {
     LOG(ERROR) << "Invalid parameters";
     return Status::INVALID_VALUE;
   }
+  recovery::RecoveryFile* recovery_file =
+      context_->recovery_info.get().recovery_file.get();
+  if (!recovery_file->security_operation_done()) {
+    LOG(DEBUG) << "security_operation_done false skip recover security";
+    return Status::OK;
+  }
   std::string error_message;
   if (!RegisterSecurityContextForManifest(context_, &error_message)) {
     LOG(ERROR) << "Unsuccessful update";
@@ -80,6 +92,12 @@ Step::Status StepRecoverSecurity::RecoveryReadonlyUpdateInstall() {
     LOG(ERROR) << "Invalid parameters";
     return Status::INVALID_VALUE;
   }
+  recovery::RecoveryFile* recovery_file =
+      context_->recovery_info.get().recovery_file.get();
+  if (!recovery_file->security_operation_done()) {
+    LOG(DEBUG) << "security_operation_done false skip recover security";
+    return Status::OK;
+  }
   std::string error_message;
   if (!RegisterSecurityContextForManifest(context_, &error_message)) {
     LOG(ERROR) << "Unsuccessful update";