diff options
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | patch_read_write_unittest.cc | 7 | ||||
-rw-r--r-- | patch_reader.cc | 20 | ||||
-rw-r--r-- | patch_reader.h | 2 | ||||
-rw-r--r-- | patch_utils.h | 17 | ||||
-rw-r--r-- | patch_writer.cc | 5 | ||||
-rw-r--r-- | patch_writer.h | 3 | ||||
-rw-r--r-- | testdata/patch_fuzzer/empty.zuc | bin | 80 -> 76 bytes | |||
-rw-r--r-- | zucchini_gen.cc | 18 |
9 files changed, 1 insertions, 72 deletions
@@ -170,7 +170,6 @@ for more info. Name | Format | Description --- | --- | --- header | PatchHeader | The header. -patch_type | uint32 | Type of this patch, see `enum PatchType`. elements_count | uint32 | Number of patch units. elements | PatchElement[elements_count] | List of all patch elements. diff --git a/patch_read_write_unittest.cc b/patch_read_write_unittest.cc index 7f84b03..b701df8 100644 --- a/patch_read_write_unittest.cc +++ b/patch_read_write_unittest.cc @@ -484,8 +484,6 @@ TEST(EnsemblePatchTest, RawPatch) { 0x98, 0xBA, 0xDC, 0xFE, // new_size 0x44, 0x55, 0x66, 0x77, // new_crc - 0, 0, 0, 0, // kRawPatch - 1, 0, 0, 0, // number of element 0x01, 0, 0, 0, // old_offset @@ -513,14 +511,11 @@ TEST(EnsemblePatchTest, RawPatch) { EXPECT_EQ(0xFEDCBA98U, header.new_size); EXPECT_EQ(0x77665544U, header.new_crc); - EXPECT_EQ(PatchType::kRawPatch, ensemble_patch_reader.patch_type()); - const std::vector<PatchElementReader>& elements = ensemble_patch_reader.elements(); EXPECT_EQ(size_t(1), elements.size()); EnsemblePatchWriter ensemble_patch_writer(header); - ensemble_patch_writer.SetPatchType(PatchType::kRawPatch); PatchElementWriter patch_element_writer(elements[0].element_match()); patch_element_writer.SetEquivalenceSink({}); patch_element_writer.SetExtraDataSink({}); @@ -538,7 +533,6 @@ TEST(EnsemblePatchTest, CheckFile) { 0xDF, 0x13, 0xE4, 0x10, // old_crc 0x03, 0x00, 0x00, 0x00, // new_size 0xDC, 0xF7, 0x00, 0x40, // new_crc - 2, 0, 0, 0, // kEnsemblePatch 1, 0, 0, 0, // number of element @@ -579,7 +573,6 @@ TEST(EnsemblePatchTest, InvalidMagic) { 0x00, 0x11, 0x22, 0x33, // old_crc 0x03, 0x00, 0x00, 0x00, // new_size 0x44, 0x55, 0x66, 0x77, // new_crc - 0, 0, 0, 0, // kRawPatch 1, 0, 0, 0, // number of element diff --git a/patch_reader.cc b/patch_reader.cc index eceb969..970b90c 100644 --- a/patch_reader.cc +++ b/patch_reader.cc @@ -272,32 +272,12 @@ bool EnsemblePatchReader::Initialize(BufferSource* source) { LOG(ERROR) << "Patch contains invalid magic."; return false; } - uint32_t patch_type_int = - static_cast<uint32_t>(PatchType::kUnrecognisedPatch); - if (!source->GetValue(&patch_type_int)) { - LOG(ERROR) << "Impossible to read patch_type from source."; - return false; - } - patch_type_ = static_cast<PatchType>(patch_type_int); - if (patch_type_ != PatchType::kRawPatch && - patch_type_ != PatchType::kSinglePatch && - patch_type_ != PatchType::kEnsemblePatch) { - LOG(ERROR) << "Invalid patch_type encountered."; - return false; - } uint32_t element_count = 0; if (!source->GetValue(&element_count)) { LOG(ERROR) << "Impossible to read element_count from source."; return false; } - if (patch_type_ == PatchType::kRawPatch || - patch_type_ == PatchType::kSinglePatch) { - if (element_count != 1) { - LOG(ERROR) << "Unexpected number of elements in patch."; - return false; // Only one element expected. - } - } offset_t current_dst_offset = 0; for (uint32_t i = 0; i < element_count; ++i) { diff --git a/patch_reader.h b/patch_reader.h index ef6cd32..ad517f5 100644 --- a/patch_reader.h +++ b/patch_reader.h @@ -263,12 +263,10 @@ class EnsemblePatchReader { bool CheckNewFile(ConstBufferView new_image) const; const PatchHeader& header() const { return header_; } - PatchType patch_type() const { return patch_type_; } const std::vector<PatchElementReader>& elements() const { return elements_; } private: PatchHeader header_; - PatchType patch_type_; std::vector<PatchElementReader> elements_; }; diff --git a/patch_utils.h b/patch_utils.h index 77cf2f3..b904380 100644 --- a/patch_utils.h +++ b/patch_utils.h @@ -14,23 +14,6 @@ namespace zucchini { -// Constants that appear inside a patch. -enum class PatchType : uint32_t { - // Patch contains a single raw element, corresponding to an element match that - // covers the entire images, and with ExecutableType::kExeTypeNoOp. - kRawPatch = 0, - - // Patch contains a single executable element, corresponding to an element - // match that covers the entire images. - kSinglePatch = 1, - - // Patch contains multiple raw and/or executable elements. - kEnsemblePatch = 2, - - // Used when type is uninitialized. - kUnrecognisedPatch -}; - // A Zucchini 'ensemble' patch is the concatenation of a patch header with a // list of patch 'elements', each containing data for patching individual // elements. diff --git a/patch_writer.cc b/patch_writer.cc index 4edbc7c..114bcd4 100644 --- a/patch_writer.cc +++ b/patch_writer.cc @@ -266,8 +266,7 @@ void EnsemblePatchWriter::AddElement(PatchElementWriter&& patch_element) { } size_t EnsemblePatchWriter::SerializedSize() const { - size_t serialized_size = - sizeof(PatchHeader) + sizeof(PatchType) + sizeof(uint32_t); + size_t serialized_size = sizeof(PatchHeader) + sizeof(uint32_t); for (const auto& patch_element : elements_) { serialized_size += patch_element.SerializedSize(); } @@ -275,11 +274,9 @@ size_t EnsemblePatchWriter::SerializedSize() const { } bool EnsemblePatchWriter::SerializeInto(BufferSink* sink) const { - DCHECK_NE(patch_type_, PatchType::kUnrecognisedPatch); DCHECK_EQ(current_dst_offset_, header_.new_size); bool ok = sink->PutValue<PatchHeader>(header_) && - sink->PutValue<PatchType>(patch_type_) && sink->PutValue<uint32_t>(base::checked_cast<uint32_t>(elements_.size())); if (!ok) return false; diff --git a/patch_writer.h b/patch_writer.h index a7c3785..b698dbc 100644 --- a/patch_writer.h +++ b/patch_writer.h @@ -239,8 +239,6 @@ class EnsemblePatchWriter { EnsemblePatchWriter(ConstBufferView old_image, ConstBufferView new_image); ~EnsemblePatchWriter(); - void SetPatchType(PatchType patch_type) { patch_type_ = patch_type; } - // Reserves space for |count| patch elements. void ReserveElements(size_t count) { elements_.reserve(count); } @@ -264,7 +262,6 @@ class EnsemblePatchWriter { private: PatchHeader header_; - PatchType patch_type_ = PatchType::kUnrecognisedPatch; std::vector<PatchElementWriter> elements_; offset_t current_dst_offset_ = 0; diff --git a/testdata/patch_fuzzer/empty.zuc b/testdata/patch_fuzzer/empty.zuc Binary files differindex 34b2d66..64eacf5 100644 --- a/testdata/patch_fuzzer/empty.zuc +++ b/testdata/patch_fuzzer/empty.zuc diff --git a/zucchini_gen.cc b/zucchini_gen.cc index de0e7d9..af7c7dd 100644 --- a/zucchini_gen.cc +++ b/zucchini_gen.cc @@ -311,18 +311,6 @@ status::Code GenerateEnsemble(ConstBufferView old_image, return GenerateRaw(old_image, new_image, patch_writer); } - PatchType patch_type = PatchType::kRawPatch; - if (num_elements == 1 && matches[0].old_element.size == old_image.size() && - matches[0].new_element.size == new_image.size()) { - // If |old_image| matches |new_image| entirely then we have single patch. - LOG(INFO) << "Old and new files are executables, " - << "generating single-file patch."; - patch_type = PatchType::kSinglePatch; - } else { - LOG(INFO) << "Generating ensemble patch."; - patch_type = PatchType::kEnsemblePatch; - } - // "Gaps" are |new_image| bytes not covered by new_elements in |matches|. // These are treated as raw data, and patched against the entire |old_image|. @@ -359,9 +347,6 @@ status::Code GenerateEnsemble(ConstBufferView old_image, } } - if (covered_new_bytes == 0) - patch_type = PatchType::kRawPatch; - if (covered_new_bytes < new_image.size()) { // Process all "gaps", which are patched against the entire "old" image. To // compute equivalence maps, "gaps" share a common suffix array @@ -400,7 +385,6 @@ status::Code GenerateEnsemble(ConstBufferView old_image, } } - patch_writer->SetPatchType(patch_type); // Write all PatchElementWriter sorted by "new" offset. for (auto& new_lo_and_patch_element : patch_element_map) patch_writer->AddElement(std::move(new_lo_and_patch_element.second)); @@ -411,8 +395,6 @@ status::Code GenerateEnsemble(ConstBufferView old_image, status::Code GenerateRaw(ConstBufferView old_image, ConstBufferView new_image, EnsemblePatchWriter* patch_writer) { - patch_writer->SetPatchType(PatchType::kRawPatch); - ImageIndex old_image_index(old_image); EncodedView old_view(old_image_index); std::vector<offset_t> old_sa = |