Fix ZERO and DISCARD operations.
These operations were broken (and not used in the generator) because
the code expects them to have a blob offset, but they don't. This bug
prevents them from being used in full payloads, but can still be used
in delta payloads.
Bug: 27858697
TEST=Deployed a full payload with ZERO operations to the new update_engine.
(cherry picked from commit 0497d05764dcae38e7a7419a2f25eff043172850)
Change-Id: I258ae8883aa505278b163d489d9f6b03087bf90d
diff --git a/payload_consumer/delta_performer.cc b/payload_consumer/delta_performer.cc
index f490c08..e2613da 100644
--- a/payload_consumer/delta_performer.cc
+++ b/payload_consumer/delta_performer.cc
@@ -827,10 +827,8 @@
bool DeltaPerformer::CanPerformInstallOperation(
const chromeos_update_engine::InstallOperation& operation) {
- // Move and source_copy operations don't require any data blob, so they can
- // always be performed.
- if (operation.type() == InstallOperation::MOVE ||
- operation.type() == InstallOperation::SOURCE_COPY)
+ // If we don't have a data blob we can apply it right away.
+ if (!operation.has_data_offset() && !operation.has_data_length())
return true;
// See if we have the entire data blob in the buffer