Skip non-critical updates during OOBE update check
If the system has not yet completed OOBE, and Omaha returns a response
with an empty deadline field, avoid initiating a background update
because doing so may violate an enterprise policy that gets pushed
down post-enrollment.
Bug: None
BUG=chromium:587101
TEST=`FEATURES=test emerge-link chromeos-base/update_engine`
TEST=powerwash, install lsb-release file from an old stable build,
repeat OOBE, verify that download is skipped via logs, then verify
that update proceeds after logging into a standard gmail account
Change-Id: I6e6fae02c609b2763abc6e9960bf6d87dd3534e2
diff --git a/omaha_request_action.cc b/omaha_request_action.cc
index e017675..f785760 100644
--- a/omaha_request_action.cc
+++ b/omaha_request_action.cc
@@ -1024,6 +1024,14 @@
OmahaResponse& output_object = const_cast<OmahaResponse&>(GetOutputObject());
PayloadStateInterface* payload_state = system_state_->payload_state();
+ if (!system_state_->hardware()->IsOOBEComplete(nullptr) &&
+ output_object.deadline.empty()) {
+ output_object.update_exists = false;
+ LOG(INFO) << "Ignoring non-critical Omaha updates until OOBE is done.";
+ completer.set_code(ErrorCode::kNonCriticalUpdateInOOBE);
+ return;
+ }
+
if (ShouldDeferDownload(&output_object)) {
output_object.update_exists = false;
LOG(INFO) << "Ignoring Omaha updates as updates are deferred by policy.";