Fix unregister security context for recovery 28/114328/2
authorDamian Pietruchowski <d.pietruchow@samsung.com>
Tue, 24 Jan 2017 15:18:28 +0000 (16:18 +0100)
committerjongmyeong ko <jongmyeong.ko@samsung.com>
Mon, 13 Feb 2017 09:42:24 +0000 (01:42 -0800)
For recovery of installation, in step StepRecoverSecurity app's
directory did not exist and Check() method returns false.
So in RecoveryNew() method UnregisterSecurityContextForManifest()
was not executed.

Change-Id: I73aa7db8eccfa1d6b74f941cf5db80ef487b3a11
Signed-off-by: Damian Pietruchowski <d.pietruchow@samsung.com>
(cherry picked from commit 75f8f0deff90239be0492a0674482ce305891c5b)

src/common/step/security/step_recover_security.cc
src/common/step/security/step_recover_security.h

index b60477e..91e4a0d 100644 (file)
 namespace common_installer {
 namespace security {
 
-bool StepRecoverSecurity::Check() {
+bool StepRecoverSecurity::Check(bool is_update) {
   if (context_->pkg_path.get().empty())
     return false;
-  if (!boost::filesystem::exists(context_->pkg_path.get()))
+  if (!boost::filesystem::exists(context_->pkg_path.get()) && is_update)
     return false;
   if (context_->pkgid.get().empty())
     return false;
@@ -25,7 +25,7 @@ bool StepRecoverSecurity::Check() {
 }
 
 Step::Status StepRecoverSecurity::RecoveryNew() {
-  if (!Check())
+  if (!Check(false))
     return Status::OK;
   std::string error_message;
   if (!UnregisterSecurityContextForManifest(
@@ -42,7 +42,7 @@ Step::Status StepRecoverSecurity::RecoveryNew() {
 }
 
 Step::Status StepRecoverSecurity::RecoveryUpdate() {
-  if (!Check()) {
+  if (!Check(true)) {
     LOG(ERROR) << "Invalid parameters";
     return Status::INVALID_VALUE;
   }
index 837ea89..3e41dd4 100644 (file)
@@ -30,7 +30,7 @@ class StepRecoverSecurity : public recovery::StepRecovery {
   Status RecoveryNew() override;
   Status RecoveryUpdate() override;
  private:
-  bool Check();
+  bool Check(bool is_update);
 
   STEP_NAME(RecoverSecurity)
 };