update_engine: Update the TPM with max_rollforward on rollback
- Determines the value from max_rollforward_(kernel|firmware)
based on the list of the last N release values from stable.
- Sets the TPM values once it has been determined that the new
image will boot and be installed.
BUG=chromium:840432
TEST=cros_run_unit_tests --board=samus --packages update_engine
Change-Id: I9620fe01cfea49e798e1397dada55ec6bec93047
Reviewed-on: https://chromium-review.googlesource.com/1419006
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Bailey Berro <baileyberro@chromium.org>
Reviewed-by: Amin Hassani <ahassani@chromium.org>
diff --git a/update_attempter.cc b/update_attempter.cc
index ee571db..31a6ce4 100644
--- a/update_attempter.cc
+++ b/update_attempter.cc
@@ -239,6 +239,7 @@
const string& target_channel,
const string& target_version_prefix,
bool rollback_allowed,
+ int rollback_allowed_milestones,
bool obey_proxies,
bool interactive) {
// This is normally called frequently enough so it's appropriate to use as a
@@ -274,6 +275,7 @@
target_channel,
target_version_prefix,
rollback_allowed,
+ rollback_allowed_milestones,
obey_proxies,
interactive)) {
return;
@@ -347,6 +349,7 @@
const string& target_channel,
const string& target_version_prefix,
bool rollback_allowed,
+ int rollback_allowed_milestones,
bool obey_proxies,
bool interactive) {
http_response_code_ = 0;
@@ -371,6 +374,10 @@
CalculateScatteringParams(interactive);
}
+ // Set how many milestones of rollback are allowed.
+ omaha_request_params_->set_rollback_allowed_milestones(
+ rollback_allowed_milestones);
+
CalculateP2PParams(interactive);
if (payload_state->GetUsingP2PForDownloading() ||
payload_state->GetUsingP2PForSharing()) {
@@ -946,6 +953,7 @@
params.target_channel,
params.target_version_prefix,
params.rollback_allowed,
+ params.rollback_allowed_milestones,
/*obey_proxies=*/false,
params.interactive);
// Always clear the forced app_version and omaha_url after an update attempt