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.
Change-Id: Ifc67bd7c3b2a81593d0347a345723cc34eaaf6b5
diff --git a/payload_consumer/delta_performer.cc b/payload_consumer/delta_performer.cc
index 074e724..1c6a862 100644
--- a/payload_consumer/delta_performer.cc
+++ b/payload_consumer/delta_performer.cc
@@ -831,10 +831,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