diff options
| author | android-build-team Robot <android-build-team-robot@google.com> | 2019-12-19 08:10:17 +0000 |
|---|---|---|
| committer | android-build-team Robot <android-build-team-robot@google.com> | 2019-12-19 08:10:17 +0000 |
| commit | 27b5a7aa4d2b595d5bc1034a4f0f91a75b301bff (patch) | |
| tree | f76e5a071e6e1e91bdfdc5b35406c70070d364ed /apexd/apexd.cpp | |
| parent | ff34b18d49a0966d60181aa728ff0ffc961932ee (diff) | |
| parent | a41373acd02cc04e2ffa4088eb6ee0a964fd3dec (diff) | |
Change-Id: I65ca498018e0e7d8670183e17061266fa62d733f
Diffstat (limited to 'apexd/apexd.cpp')
| -rw-r--r-- | apexd/apexd.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/apexd/apexd.cpp b/apexd/apexd.cpp index 4f5ca52..589b962 100644 --- a/apexd/apexd.cpp +++ b/apexd/apexd.cpp @@ -93,6 +93,8 @@ static constexpr const char* kApexStatusSysprop = "apexd.status"; static constexpr const char* kApexStatusStarting = "starting"; static constexpr const char* kApexStatusReady = "ready"; +static constexpr const char* kBuildFingerprintSysprop = "ro.build.fingerprint"; + static constexpr const char* kApexVerityOnSystemProp = "persist.apexd.verity_on_system"; static bool gForceDmVerityOnSystem = @@ -1372,6 +1374,7 @@ Status scanPackagesDirAndActivate(const char* apex_package_dir) { } void scanStagedSessionsDirAndStage() { + using android::base::GetProperty; LOG(INFO) << "Scanning " << kApexSessionsDir << " looking for sessions to be activated."; @@ -1389,6 +1392,12 @@ void scanStagedSessionsDirAndStage() { }; auto scope_guard = android::base::make_scope_guard(session_failed_fn); + std::string build_fingerprint = GetProperty(kBuildFingerprintSysprop, ""); + if (session.GetBuildFingerprint().compare(build_fingerprint) != 0) { + LOG(ERROR) << "APEX build fingerprint has changed"; + continue; + } + std::vector<std::string> dirsToScan; if (session.GetChildSessionIds().empty()) { dirsToScan.push_back(std::string(kStagedSessionsDir) + "/session_" + @@ -1789,6 +1798,7 @@ void onAllPackagesReady() { StatusOr<std::vector<ApexFile>> submitStagedSession( const int session_id, const std::vector<int>& child_session_ids) { + using android::base::GetProperty; bool needsBackup = true; Status cleanup_status = ClearSessions(); if (!cleanup_status.Ok()) { @@ -1843,6 +1853,8 @@ StatusOr<std::vector<ApexFile>> submitStagedSession( return StatusOr<std::vector<ApexFile>>::MakeError(session.ErrorMessage()); } (*session).SetChildSessionIds(child_session_ids); + std::string build_fingerprint = GetProperty(kBuildFingerprintSysprop, ""); + (*session).SetBuildFingerprint(build_fingerprint); Status commit_status = (*session).UpdateStateAndCommit(SessionState::VERIFIED); if (!commit_status.Ok()) { |
