Fix a bug when recover preload-rw update 96/201596/2
authorSangyoon Jang <jeremy.jang@samsung.com>
Mon, 18 Mar 2019 06:08:53 +0000 (15:08 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Mon, 18 Mar 2019 08:59:40 +0000 (17:59 +0900)
The preload-rw package should not be a system package.

Change-Id: Iba5d917105fbdbfc699cd9a55403097638446aa3
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/common/step/pkgmgr/step_recover_application.cc
src/common/step/pkgmgr/step_recover_application.h

index 9b14d53..526048a 100644 (file)
@@ -28,8 +28,9 @@ Step::Status StepRecoverApplication::RecoveryUpdate() {
     return Status::ERROR;
   }
   PkgQueryInterface pkg_query(context_->pkgid.get(), context_->uid.get());
-  if (pkg_query.IsUpdatedPackage())
-    SetExtraAttributes(true);
+  if (pkg_query.IsPreloadPackage())
+    SetExtAttrForPreloadPackage(pkg_query.IsUpdatedPackage(),
+        pkg_query.IsRemovablePackage());
   UnregisterApplication();
   if (!RegisterApplication()) {
     LOG(ERROR) << "Unsuccessful app registration";
@@ -43,7 +44,7 @@ Step::Status StepRecoverApplication::RecoveryReadonlyUpdateInstall() {
     LOG(ERROR) << "Some parameters are lacking";
     return Status::ERROR;
   }
-  SetExtraAttributes(false);
+  SetExtAttrForPreloadPackage(false, false);
   UnregisterApplication();
   if (!RegisterApplication()) {
     LOG(ERROR) << "Unsuccessful app registration";
@@ -65,18 +66,19 @@ bool StepRecoverApplication::SetXmlPaths() {
   return true;
 }
 
-void StepRecoverApplication::SetExtraAttributes(bool is_updated) {
+void StepRecoverApplication::SetExtAttrForPreloadPackage(
+    bool is_updated, bool is_removable) {
   manifest_x* manifest_data = context_->manifest_data.get();
-  free(manifest_data->system);
-  manifest_data->system = strdup("true");
   free(manifest_data->preload);
   manifest_data->preload = strdup("true");
   free(manifest_data->update);
   manifest_data->update = strdup(is_updated ? "true" : "false");
+  free(manifest_data->system);
+  manifest_data->system = strdup(is_removable ? "false" : "true");
   free(manifest_data->readonly);
-  manifest_data->readonly = strdup(is_updated ? "false" : "true");
+  manifest_data->readonly = strdup(is_removable ? "false" : "true");
   free(manifest_data->removable);
-  manifest_data->removable = strdup(is_updated ? "true" : "false");
+  manifest_data->removable = strdup(is_removable ? "true" : "false");
 }
 
 bool StepRecoverApplication::UnregisterApplication() {
index d9cc7fb..6cd40e6 100644 (file)
@@ -29,7 +29,7 @@ class StepRecoverApplication : public recovery::StepRecovery {
 
  private:
   bool SetXmlPaths();
-  void SetExtraAttributes(bool is_updated);
+  void SetExtAttrForPreloadPackage(bool is_updated, bool is_removable);
   bool UnregisterApplication();
   bool RegisterApplication();