1 // Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
2 // Use of this source code is governed by a apache 2.0 license that can be
3 // found in the LICENSE file.
5 #include "common/step/security/step_update_security.h"
9 #include "common/security_registration.h"
11 namespace common_installer {
14 Step::Status StepUpdateSecurity::process() {
15 std::string error_message;
16 if (!RegisterSecurityContextForManifest(
17 context_->pkgid.get(), context_->pkg_path.get(), context_->uid.get(),
18 &context_->certificate_info.get(), context_->manifest_data.get(),
19 context_->cross_app_rules.get(), &error_message)) {
20 if (!error_message.empty()) {
21 LOG(ERROR) << "error_message: " << error_message;
22 on_error(Status::SECURITY_ERROR, error_message);
24 return Status::SECURITY_ERROR;
26 if (context_->request_type.get() != RequestType::ReadonlyUpdateUninstall) {
27 if (!RegisterSecurityContextForPath(
28 context_->pkgid.get(), context_->pkg_path.get(), context_->uid.get(),
29 context_->is_readonly_package.get(), &error_message)) {
30 if (!error_message.empty()) {
31 LOG(ERROR) << "error_message: " << error_message;
32 on_error(Status::SECURITY_ERROR, error_message);
34 return Status::SECURITY_ERROR;
37 LOG(DEBUG) << "Security context updated";
41 Step::Status StepUpdateSecurity::undo() {
42 std::string error_message;
43 if (!RegisterSecurityContextForManifest(
44 context_->pkgid.get(), context_->pkg_path.get(), context_->uid.get(),
45 &context_->certificate_info.get(), context_->old_manifest_data.get(),
46 context_->cross_app_rules.get(), &error_message)) {
47 if (!error_message.empty()) {
48 LOG(ERROR) << "error_message: " << error_message;
50 return Status::SECURITY_ERROR;
52 if (!RegisterSecurityContextForPath(
53 context_->pkgid.get(), context_->pkg_path.get(), context_->uid.get(),
54 context_->is_readonly_package.get(), &error_message)) {
55 if (!error_message.empty()) {
56 LOG(ERROR) << "error_message: " << error_message;
57 on_error(Status::SECURITY_ERROR, error_message);
59 return Status::SECURITY_ERROR;
61 LOG(DEBUG) << "Security context reverted";
65 } // namespace security
66 } // namespace common_installer