--- /dev/null
+// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by an apache-2.0 license that can be
+// found in the LICENSE file.
+
+#include "tpk/step/configuration/step_adjust_install_location.h"
+
+#include <cstdlib>
+#include <cstring>
+
+namespace ci = common_installer;
+
+namespace {
+
+const char kAutoLocation[] = "auto";
+
+} // namespace
+
+namespace tpk {
+namespace configuration {
+
+ci::Step::Status StepAdjustInstallLocation::process() {
+ ci::PrivilegeLevel level = context_->privilege_level.get();
+ // Unfortunately we don't know privilege level when parsing manifest,
+ // because checking signature is done after parsing.
+ if (level == ci::PrivilegeLevel::PUBLIC) {
+ manifest_x* manifest = context_->manifest_data.get();
+ // This may be allocated by step parse
+ free(const_cast<char*>(manifest->installlocation));
+ manifest->installlocation = strdup(kAutoLocation);
+ }
+ return Status::OK;
+}
+
+} // namespace configuration
+} // namespace tpk
--- /dev/null
+// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by a apache 2.0 license that can be
+// found in the LICENSE file.
+
+#ifndef TPK_STEP_CONFIGURATION_STEP_ADJUST_INSTALL_LOCATION_H_
+#define TPK_STEP_CONFIGURATION_STEP_ADJUST_INSTALL_LOCATION_H_
+
+#include <manifest_parser/utils/logging.h>
+
+#include "common/installer_context.h"
+#include "common/step/step.h"
+
+namespace tpk {
+namespace configuration {
+
+class StepAdjustInstallLocation : public common_installer::Step {
+ public:
+ using Step::Step;
+
+ Status process() override;
+ Status clean() override { return Status::OK; }
+ Status undo() override { return Status::OK; }
+ Status precheck() override { return Status::OK; }
+
+ STEP_NAME(AdjustInstallLocation)
+};
+
+} // namespace configuration
+} // namespace tpk
+
+#endif // TPK_STEP_CONFIGURATION_STEP_ADJUST_INSTALL_LOCATION_H_
#include <common/step/security/step_rollback_installation_security.h>
#include <common/step/security/step_update_security.h>
+#include "tpk/step/configuration/step_adjust_install_location.h"
#include "tpk/step/filesystem/step_create_external_storage_directories.h"
#include "tpk/step/filesystem/step_create_symbolic_link.h"
#include "tpk/step/filesystem/step_check_pkg_directory_path.h"
AddStep<ci::pkgmgr::StepCheckRestriction>();
AddStep<ci::configuration::StepCheckTizenVersion>();
AddStep<ci::security::StepCheckSignature>();
+ AddStep<tpk::configuration::StepAdjustInstallLocation>();
AddStep<ci::security::StepPrivilegeCompatibility>();
AddStep<tpk::security::StepCheckTpkBackgroundCategory>();
AddStep<ci::filesystem::StepAcquireExternalStorage>(false);
AddStep<ci::configuration::StepParsePreload>();
AddStep<ci::configuration::StepCheckTizenVersion>();
AddStep<ci::security::StepCheckSignature>();
+ AddStep<tpk::configuration::StepAdjustInstallLocation>();
AddStep<ci::security::StepPrivilegeCompatibility>();
AddStep<tpk::security::StepCheckTpkBackgroundCategory>();
AddStep<ci::security::StepCheckOldCertificate>();
AddStep<ci::filesystem::StepDeltaPatch>();
AddStep<ci::filesystem::StepDisableExternalMount>();
AddStep<ci::security::StepCheckSignature>();
+ AddStep<tpk::configuration::StepAdjustInstallLocation>();
AddStep<ci::security::StepPrivilegeCompatibility>();
AddStep<tpk::security::StepCheckTpkBackgroundCategory>();
AddStep<ci::security::StepCheckOldCertificate>();
AddStep<ci::pkgmgr::StepCheckRestriction>();
AddStep<ci::configuration::StepCheckTizenVersion>();
AddStep<ci::security::StepCheckSignature>();
+ AddStep<tpk::configuration::StepAdjustInstallLocation>();
AddStep<ci::security::StepPrivilegeCompatibility>();
AddStep<tpk::security::StepCheckTpkBackgroundCategory>();
AddStep<ci::security::StepRollbackInstallationSecurity>();
AddStep<ci::configuration::StepParsePreload>();
AddStep<ci::configuration::StepCheckTizenVersion>();
AddStep<ci::security::StepCheckSignature>();
+ AddStep<tpk::configuration::StepAdjustInstallLocation>();
AddStep<ci::security::StepPrivilegeCompatibility>();
AddStep<tpk::security::StepCheckTpkBackgroundCategory>();
AddStep<ci::security::StepCheckOldCertificate>();
AddStep<ci::configuration::StepCheckTizenVersion>();
AddStep<tpk::pkgmgr::StepManifestAdjustment>();
AddStep<ci::security::StepCheckSignature>();
+ AddStep<tpk::configuration::StepAdjustInstallLocation>();
AddStep<ci::security::StepPrivilegeCompatibility>();
AddStep<tpk::security::StepCheckTpkBackgroundCategory>();
AddStep<tpk::filesystem::StepCreateSymbolicLink>();
AddStep<ci::configuration::StepCheckTizenVersion>();
AddStep<tpk::pkgmgr::StepManifestAdjustment>();
AddStep<ci::security::StepCheckSignature>();
+ AddStep<tpk::configuration::StepAdjustInstallLocation>();
AddStep<ci::security::StepPrivilegeCompatibility>();
AddStep<tpk::security::StepCheckTpkBackgroundCategory>();
AddStep<tpk::filesystem::StepCreateSymbolicLink>();