summaryrefslogtreecommitdiff
path: root/apexd/apexd.cpp
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2019-12-19 08:10:17 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-12-19 08:10:17 +0000
commit27b5a7aa4d2b595d5bc1034a4f0f91a75b301bff (patch)
treef76e5a071e6e1e91bdfdc5b35406c70070d364ed /apexd/apexd.cpp
parentff34b18d49a0966d60181aa728ff0ffc961932ee (diff)
parenta41373acd02cc04e2ffa4088eb6ee0a964fd3dec (diff)
Snap for 6085360 from a41373acd02cc04e2ffa4088eb6ee0a964fd3dec to qt-qpr2-releaseHEADq10.0
Change-Id: I65ca498018e0e7d8670183e17061266fa62d733f
Diffstat (limited to 'apexd/apexd.cpp')
-rw-r--r--apexd/apexd.cpp12
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()) {