Commit cfb444ca authored by Samuel Huang's avatar Samuel Huang Committed by Commit Bot

[Zucchini] Format change: PatchElementHeader: Group fields by "old" and "new".

Previously PatchElementHeader members were ordered by:
  [old_offset, new_offset, old_length, new_length].
This CL changes the order to
  [old_offset, old_length, new_offset, new_length]
to be consistent with PatchHeader's grouping by "old" and "new".

Also improve comments in patch_read_write_unittest.cc, and fix
input value in PatchElementTest.WrongExtraData.

Change-Id: I0dab56b7de1ba99f0a2f686dfebdf422a9d1c3b0
Reviewed-on: https://chromium-review.googlesource.com/1043073
Commit-Queue: Samuel Huang <huangs@chromium.org>
Reviewed-by: default avatarGreg Thompson <grt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556076}
parent ad7ac05b
...@@ -209,8 +209,8 @@ PatchElement self contained. ...@@ -209,8 +209,8 @@ PatchElement self contained.
Name | Format | Description Name | Format | Description
--- | --- | --- --- | --- | ---
old_offset | uint32 | Starting offset of the element in old file. old_offset | uint32 | Starting offset of the element in old file.
new_offset | uint32 | Starting offset of the element in new file.
old_length | uint32 | Length of the element in old file. old_length | uint32 | Length of the element in old file.
new_offset | uint32 | Starting offset of the element in new file.
new_length | uint32 | Length of the element in new file. new_length | uint32 | Length of the element in new file.
exe_type | uint32 | Executable type for this unit, see `enum ExecutableType`. exe_type | uint32 | Executable type for this unit, see `enum ExecutableType`.
......
...@@ -57,30 +57,31 @@ void TestSerialize(const ByteVector& expected, const T& value) { ...@@ -57,30 +57,31 @@ void TestSerialize(const ByteVector& expected, const T& value) {
ByteVector CreatePatchElement() { ByteVector CreatePatchElement() {
return { return {
// PatchElementHeader
0x01, 0, 0, 0, // old_offset 0x01, 0, 0, 0, // old_offset
0x03, 0, 0, 0, // new_offset
0x51, 0, 0, 0, // old_length 0x51, 0, 0, 0, // old_length
0x03, 0, 0, 0, // new_offset
0x13, 0, 0, 0, // new_length 0x13, 0, 0, 0, // new_length
'P', 'x', '8', '6', // EXE_TYPE_WIN32_X86 'P', 'x', '8', '6', // exe_type = EXE_TYPE_WIN32_X86
// EquivalenceSource
1, 0, 0, 0, // src_skip size 1, 0, 0, 0, // src_skip size
0x10, // src_skip content 0x10, // src_skip content
1, 0, 0, 0, // dst_skip size 1, 0, 0, 0, // dst_skip size
0x00, // dst_skip content 0x00, // dst_skip content
1, 0, 0, 0, // copy_count size 1, 0, 0, 0, // copy_count size
0x12, // copy_count content 0x12, // copy_count content
// ExtraDataSource
1, 0, 0, 0, // extra_data size 1, 0, 0, 0, // extra_data size
0x13, // extra_data content 0x13, // extra_data content
// RawDeltaSource
1, 0, 0, 0, // raw_delta_skip size 1, 0, 0, 0, // raw_delta_skip size
0x14, // raw_delta_skip content 0x14, // raw_delta_skip content
1, 0, 0, 0, // raw_delta_diff size 1, 0, 0, 0, // raw_delta_diff size
0x15, // raw_delta_diff content 0x15, // raw_delta_diff content
// ReferenceDeltaSource
1, 0, 0, 0, // reference_delta size 1, 0, 0, 0, // reference_delta size
0x16, // reference_delta content 0x16, // reference_delta content
// PatchElementReader
2, 0, 0, 0, // pool count 2, 0, 0, 0, // pool count
0, // pool_tag 0, // pool_tag
1, 0, 0, 0, // extra_targets size 1, 0, 0, 0, // extra_targets size
...@@ -93,11 +94,12 @@ ByteVector CreatePatchElement() { ...@@ -93,11 +94,12 @@ ByteVector CreatePatchElement() {
ByteVector CreateElementMatch() { ByteVector CreateElementMatch() {
return { return {
// PatchElementHeader
0x01, 0, 0, 0, // old_offset 0x01, 0, 0, 0, // old_offset
0x03, 0, 0, 0, // new_offset
0x02, 0, 0, 0, // old_length 0x02, 0, 0, 0, // old_length
0x03, 0, 0, 0, // new_offset
0x04, 0, 0, 0, // new_length 0x04, 0, 0, 0, // new_length
'D', 'E', 'X', ' ', // kExeTypeDex 'D', 'E', 'X', ' ', // exe_type = kExeTypeDex
}; };
} }
...@@ -149,7 +151,8 @@ TEST(PatchTest, ParseElementMatchNoLength) { ...@@ -149,7 +151,8 @@ TEST(PatchTest, ParseElementMatchNoLength) {
// Set old_length to 0 to trigger an error. // Set old_length to 0 to trigger an error.
{ {
ByteVector data = CreateElementMatch(); ByteVector data = CreateElementMatch();
ModifyByte(8U, 0x02, 0x00, &data); // Make the old_length = 0. // old_length := 0.
ModifyByte(offsetof(PatchElementHeader, old_length), 0x02, 0x00, &data);
BufferSource buffer_source(data.data(), data.size()); BufferSource buffer_source(data.data(), data.size());
ElementMatch element_match = {}; ElementMatch element_match = {};
EXPECT_FALSE(patch::ParseElementMatch(&buffer_source, &element_match)); EXPECT_FALSE(patch::ParseElementMatch(&buffer_source, &element_match));
...@@ -157,7 +160,8 @@ TEST(PatchTest, ParseElementMatchNoLength) { ...@@ -157,7 +160,8 @@ TEST(PatchTest, ParseElementMatchNoLength) {
// Set new_length to 0 to trigger an error. // Set new_length to 0 to trigger an error.
{ {
ByteVector data = CreateElementMatch(); ByteVector data = CreateElementMatch();
ModifyByte(12U, 0x04, 0x00, &data); // Make the new_length = 0. // new_length := 0.
ModifyByte(offsetof(PatchElementHeader, new_length), 0x04, 0x00, &data);
BufferSource buffer_source(data.data(), data.size()); BufferSource buffer_source(data.data(), data.size());
ElementMatch element_match = {}; ElementMatch element_match = {};
EXPECT_FALSE(patch::ParseElementMatch(&buffer_source, &element_match)); EXPECT_FALSE(patch::ParseElementMatch(&buffer_source, &element_match));
...@@ -165,8 +169,10 @@ TEST(PatchTest, ParseElementMatchNoLength) { ...@@ -165,8 +169,10 @@ TEST(PatchTest, ParseElementMatchNoLength) {
// Set both new_length and old_length to 0 to trigger an error. // Set both new_length and old_length to 0 to trigger an error.
{ {
ByteVector data = CreateElementMatch(); ByteVector data = CreateElementMatch();
ModifyByte(8U, 0x02, 0x00, &data); // Make the old_length = 0. // old_length := 0.
ModifyByte(12U, 0x04, 0x00, &data); // Make the new_length = 0. ModifyByte(offsetof(PatchElementHeader, old_length), 0x02, 0x00, &data);
// new_length := 0.
ModifyByte(offsetof(PatchElementHeader, new_length), 0x04, 0x00, &data);
BufferSource buffer_source(data.data(), data.size()); BufferSource buffer_source(data.data(), data.size());
ElementMatch element_match = {}; ElementMatch element_match = {};
EXPECT_FALSE(patch::ParseElementMatch(&buffer_source, &element_match)); EXPECT_FALSE(patch::ParseElementMatch(&buffer_source, &element_match));
...@@ -245,6 +251,7 @@ TEST(PatchTest, SerializeBufferTooSmall) { ...@@ -245,6 +251,7 @@ TEST(PatchTest, SerializeBufferTooSmall) {
TEST(EquivalenceSinkSourceTest, Empty) { TEST(EquivalenceSinkSourceTest, Empty) {
ByteVector data = { ByteVector data = {
// EquivalenceSource
0, 0, 0, 0, // src_skip size 0, 0, 0, 0, // src_skip size
0, 0, 0, 0, // dst_skip size 0, 0, 0, 0, // dst_skip size
0, 0, 0, 0, // copy_count size 0, 0, 0, 0, // copy_count size
...@@ -260,6 +267,7 @@ TEST(EquivalenceSinkSourceTest, Empty) { ...@@ -260,6 +267,7 @@ TEST(EquivalenceSinkSourceTest, Empty) {
TEST(EquivalenceSourceSinkTest, Normal) { TEST(EquivalenceSourceSinkTest, Normal) {
ByteVector data = { ByteVector data = {
// EquivalenceSource
2, 0, 0, 0, // src_skip size 2, 0, 0, 0, // src_skip size
6, 7, // src_skip content 6, 7, // src_skip content
2, 0, 0, 0, // dst_skip size 2, 0, 0, 0, // dst_skip size
...@@ -294,6 +302,7 @@ TEST(EquivalenceSourceSinkTest, Normal) { ...@@ -294,6 +302,7 @@ TEST(EquivalenceSourceSinkTest, Normal) {
TEST(ExtraDataSourceSinkTest, Empty) { TEST(ExtraDataSourceSinkTest, Empty) {
ByteVector data = { ByteVector data = {
// ExtraDataSource
0, 0, 0, 0, // extra_data size 0, 0, 0, 0, // extra_data size
}; };
ExtraDataSource extra_data_source = TestInitialize<ExtraDataSource>(&data); ExtraDataSource extra_data_source = TestInitialize<ExtraDataSource>(&data);
...@@ -306,6 +315,7 @@ TEST(ExtraDataSourceSinkTest, Empty) { ...@@ -306,6 +315,7 @@ TEST(ExtraDataSourceSinkTest, Empty) {
TEST(ExtraDataSourceSinkTest, Normal) { TEST(ExtraDataSourceSinkTest, Normal) {
ByteVector data = { ByteVector data = {
// ExtraDataSource
5, 0, 0, 0, // extra_data size 5, 0, 0, 0, // extra_data size
1, 2, 3, 4, 5, // extra_data content 1, 2, 3, 4, 5, // extra_data content
}; };
...@@ -339,6 +349,7 @@ TEST(ExtraDataSourceSinkTest, Normal) { ...@@ -339,6 +349,7 @@ TEST(ExtraDataSourceSinkTest, Normal) {
TEST(RawDeltaSourceSinkTest, Empty) { TEST(RawDeltaSourceSinkTest, Empty) {
ByteVector data = { ByteVector data = {
// RawDeltaSource
0, 0, 0, 0, // raw_delta_skip size 0, 0, 0, 0, // raw_delta_skip size
0, 0, 0, 0, // raw_delta_diff size 0, 0, 0, 0, // raw_delta_diff size
}; };
...@@ -352,6 +363,7 @@ TEST(RawDeltaSourceSinkTest, Empty) { ...@@ -352,6 +363,7 @@ TEST(RawDeltaSourceSinkTest, Empty) {
TEST(RawDeltaSinkSourceSinkTest, Normal) { TEST(RawDeltaSinkSourceSinkTest, Normal) {
ByteVector data = { ByteVector data = {
// RawDeltaSource
3, 0, 0, 0, // raw_delta_skip size 3, 0, 0, 0, // raw_delta_skip size
1, 3, 0, // raw_delta_skip content 1, 3, 0, // raw_delta_skip content
3, 0, 0, 0, // raw_delta_diff size 3, 0, 0, 0, // raw_delta_diff size
...@@ -390,6 +402,7 @@ TEST(RawDeltaSinkSourceSinkTest, Normal) { ...@@ -390,6 +402,7 @@ TEST(RawDeltaSinkSourceSinkTest, Normal) {
TEST(RawDeltaSourceSinkTest, InvalidContent) { TEST(RawDeltaSourceSinkTest, InvalidContent) {
ByteVector data = { ByteVector data = {
// RawDeltaSource
2, 0, 0, 0, // raw_delta_skip size 2, 0, 0, 0, // raw_delta_skip size
1, 3, // raw_delta_skip content 1, 3, // raw_delta_skip content
2, 0, 0, 0, // raw_delta_diff size 2, 0, 0, 0, // raw_delta_diff size
...@@ -402,6 +415,7 @@ TEST(RawDeltaSourceSinkTest, InvalidContent) { ...@@ -402,6 +415,7 @@ TEST(RawDeltaSourceSinkTest, InvalidContent) {
TEST(ReferenceDeltaSourceSinkTest, Empty) { TEST(ReferenceDeltaSourceSinkTest, Empty) {
ByteVector data = { ByteVector data = {
// ReferenceDeltaSource
0, 0, 0, 0, // reference_delta size 0, 0, 0, 0, // reference_delta size
}; };
ReferenceDeltaSource reference_delta_source = ReferenceDeltaSource reference_delta_source =
...@@ -415,6 +429,7 @@ TEST(ReferenceDeltaSourceSinkTest, Empty) { ...@@ -415,6 +429,7 @@ TEST(ReferenceDeltaSourceSinkTest, Empty) {
TEST(ReferenceDeltaSourceSinkTest, Normal) { TEST(ReferenceDeltaSourceSinkTest, Normal) {
ByteVector data = { ByteVector data = {
// ReferenceDeltaSource
2, 0, 0, 0, // reference_delta size 2, 0, 0, 0, // reference_delta size
84, 47, // reference_delta content 84, 47, // reference_delta content
}; };
...@@ -443,6 +458,7 @@ TEST(ReferenceDeltaSourceSinkTest, Normal) { ...@@ -443,6 +458,7 @@ TEST(ReferenceDeltaSourceSinkTest, Normal) {
TEST(TargetSourceSinkTest, Empty) { TEST(TargetSourceSinkTest, Empty) {
ByteVector data = { ByteVector data = {
// TargetSource
0, 0, 0, 0, // extra_targets size 0, 0, 0, 0, // extra_targets size
}; };
TargetSource target_source = TestInitialize<TargetSource>(&data); TargetSource target_source = TestInitialize<TargetSource>(&data);
...@@ -455,6 +471,7 @@ TEST(TargetSourceSinkTest, Empty) { ...@@ -455,6 +471,7 @@ TEST(TargetSourceSinkTest, Empty) {
TEST(TargetSourceSinkTest, Normal) { TEST(TargetSourceSinkTest, Normal) {
ByteVector data = { ByteVector data = {
// TargetSource
2, 0, 0, 0, // extra_targets size 2, 0, 0, 0, // extra_targets size
3, 1, // extra_targets content 3, 1, // extra_targets content
}; };
...@@ -535,39 +552,43 @@ TEST(PatchElementTest, Normal) { ...@@ -535,39 +552,43 @@ TEST(PatchElementTest, Normal) {
} }
TEST(PatchElementTest, BadEquivalence) { TEST(PatchElementTest, BadEquivalence) {
// If the "old" element is too small the test should fail. // If the "old" element is too small then the test should fail.
{ {
ByteVector data = CreatePatchElement(); ByteVector data = CreatePatchElement();
ModifyByte(8, 0x51, 0x04, &data); // old_length (too small) // old_length := 0x4 (too small).
ModifyByte(offsetof(PatchElementHeader, old_length), 0x51, 0x04, &data);
TestInvalidInitialize<PatchElementReader>(&data); TestInvalidInitialize<PatchElementReader>(&data);
} }
// If the "new" element is too small the test should fail. // If the "new" element is too small then the test should fail.
{ {
ByteVector data = CreatePatchElement(); ByteVector data = CreatePatchElement();
ModifyByte(12, 0x13, 0x05, &data); // new_length (too small) // new_length := 0x5 (too small).
ModifyByte(offsetof(PatchElementHeader, new_length), 0x13, 0x05, &data);
TestInvalidInitialize<PatchElementReader>(&data); TestInvalidInitialize<PatchElementReader>(&data);
} }
} }
TEST(PatchElementTest, WrongExtraData) { TEST(PatchElementTest, WrongExtraData) {
// Make "new" too large so there is insufficient extra data to cover the // Make "new" too large so insufficient extra data exists to cover the image.
// image.
{ {
ByteVector data = CreatePatchElement(); ByteVector data = CreatePatchElement();
ModifyByte(12, 0x13, 0x14, &data); // new_length (too large) // new_length := 0x14 (too large).
ModifyByte(offsetof(PatchElementHeader, new_length), 0x13, 0x14, &data);
TestInvalidInitialize<PatchElementReader>(&data); TestInvalidInitialize<PatchElementReader>(&data);
} }
// Make "new" too small so there is too much extra data. // Make "new" too small so there is too much extra data.
{ {
ByteVector data = CreatePatchElement(); ByteVector data = CreatePatchElement();
ModifyByte(12, 0x13, 0x14, &data); // new_length (too small) // new_length := 0x12 (too small).
ModifyByte(offsetof(PatchElementHeader, new_length), 0x13, 0x12, &data);
TestInvalidInitialize<PatchElementReader>(&data); TestInvalidInitialize<PatchElementReader>(&data);
} }
} }
TEST(EnsemblePatchTest, RawPatch) { TEST(EnsemblePatchTest, RawPatch) {
ByteVector data = { ByteVector data = {
// PatchHeader
0x5A, 0x75, 0x63, 0x00, // magic 0x5A, 0x75, 0x63, 0x00, // magic
0x10, 0x32, 0x54, 0x76, // old_size 0x10, 0x32, 0x54, 0x76, // old_size
0x00, 0x11, 0x22, 0x33, // old_crc 0x00, 0x11, 0x22, 0x33, // old_crc
...@@ -576,19 +597,25 @@ TEST(EnsemblePatchTest, RawPatch) { ...@@ -576,19 +597,25 @@ TEST(EnsemblePatchTest, RawPatch) {
1, 0, 0, 0, // number of element 1, 0, 0, 0, // number of element
// PatchElementHeader
0x01, 0, 0, 0, // old_offset 0x01, 0, 0, 0, // old_offset
0x00, 0, 0, 0, // new_offset
0x02, 0, 0, 0, // old_length 0x02, 0, 0, 0, // old_length
0x00, 0, 0, 0, // new_offset
0x01, 0, 0, 0, // new_length 0x01, 0, 0, 0, // new_length
'P', 'x', '8', '6', // EXE_TYPE_WIN32_X86 'P', 'x', '8', '6', // exe_type = EXE_TYPE_WIN32_X86
// EquivalenceSource
0, 0, 0, 0, // src_skip size 0, 0, 0, 0, // src_skip size
0, 0, 0, 0, // dst_skip size 0, 0, 0, 0, // dst_skip size
0, 0, 0, 0, // copy_count size 0, 0, 0, 0, // copy_count size
// ExtraDataSource
0x01, 0, 0, 0, // extra_data size 0x01, 0, 0, 0, // extra_data size
0x04, // extra_data content 0x04, // extra_data content
// RawDeltaSource
0, 0, 0, 0, // raw_delta_skip size 0, 0, 0, 0, // raw_delta_skip size
0, 0, 0, 0, // raw_delta_diff size 0, 0, 0, 0, // raw_delta_diff size
// ReferenceDeltaSource
0, 0, 0, 0, // reference_delta size 0, 0, 0, 0, // reference_delta size
// PatchElementReader
0, 0, 0, 0, // pool count 0, 0, 0, 0, // pool count
}; };
...@@ -619,6 +646,7 @@ TEST(EnsemblePatchTest, RawPatch) { ...@@ -619,6 +646,7 @@ TEST(EnsemblePatchTest, RawPatch) {
TEST(EnsemblePatchTest, CheckFile) { TEST(EnsemblePatchTest, CheckFile) {
ByteVector data = { ByteVector data = {
// PatchHeader
0x5A, 0x75, 0x63, 0x00, // magic 0x5A, 0x75, 0x63, 0x00, // magic
0x05, 0x00, 0x00, 0x00, // old_size 0x05, 0x00, 0x00, 0x00, // old_size
0xDF, 0x13, 0xE4, 0x10, // old_crc 0xDF, 0x13, 0xE4, 0x10, // old_crc
...@@ -627,19 +655,25 @@ TEST(EnsemblePatchTest, CheckFile) { ...@@ -627,19 +655,25 @@ TEST(EnsemblePatchTest, CheckFile) {
1, 0, 0, 0, // number of element 1, 0, 0, 0, // number of element
// PatchElementHeader
0x01, 0, 0, 0, // old_offset 0x01, 0, 0, 0, // old_offset
0x00, 0, 0, 0, // new_offset
0x02, 0, 0, 0, // old_length 0x02, 0, 0, 0, // old_length
0x00, 0, 0, 0, // new_offset
0x03, 0, 0, 0, // new_length 0x03, 0, 0, 0, // new_length
'P', 'x', '8', '6', // EXE_TYPE_WIN32_X86 'P', 'x', '8', '6', // exe_type = EXE_TYPE_WIN32_X86
// EquivalenceSource
0, 0, 0, 0, // src_skip size 0, 0, 0, 0, // src_skip size
0, 0, 0, 0, // dst_skip size 0, 0, 0, 0, // dst_skip size
0, 0, 0, 0, // copy_count size 0, 0, 0, 0, // copy_count size
// ExtraDataSource
0x03, 0, 0, 0, // extra_data size 0x03, 0, 0, 0, // extra_data size
'A', 'B', 'C', // extra_data content 'A', 'B', 'C', // extra_data content
// RawDeltaSource
0, 0, 0, 0, // raw_delta_skip size 0, 0, 0, 0, // raw_delta_skip size
0, 0, 0, 0, // raw_delta_diff size 0, 0, 0, 0, // raw_delta_diff size
// ReferenceDeltaSource
0, 0, 0, 0, // reference_delta size 0, 0, 0, 0, // reference_delta size
// PatchElementReader
0, 0, 0, 0, // pool count 0, 0, 0, 0, // pool count
}; };
...@@ -660,6 +694,7 @@ TEST(EnsemblePatchTest, CheckFile) { ...@@ -660,6 +694,7 @@ TEST(EnsemblePatchTest, CheckFile) {
TEST(EnsemblePatchTest, InvalidMagic) { TEST(EnsemblePatchTest, InvalidMagic) {
ByteVector data = { ByteVector data = {
// PatchHeader
0x42, 0x42, 0x42, 0x00, // magic 0x42, 0x42, 0x42, 0x00, // magic
0x10, 0x32, 0x54, 0x76, // old_size 0x10, 0x32, 0x54, 0x76, // old_size
0x00, 0x11, 0x22, 0x33, // old_crc 0x00, 0x11, 0x22, 0x33, // old_crc
...@@ -668,18 +703,24 @@ TEST(EnsemblePatchTest, InvalidMagic) { ...@@ -668,18 +703,24 @@ TEST(EnsemblePatchTest, InvalidMagic) {
1, 0, 0, 0, // number of element 1, 0, 0, 0, // number of element
// PatchElementHeader
0x01, 0, 0, 0, // old_offset 0x01, 0, 0, 0, // old_offset
0x00, 0, 0, 0, // new_offset
0x02, 0, 0, 0, // old_length 0x02, 0, 0, 0, // old_length
0x00, 0, 0, 0, // new_offset
0x03, 0, 0, 0, // new_length 0x03, 0, 0, 0, // new_length
'P', 'x', '8', '6', // EXE_TYPE_WIN32_X86 'P', 'x', '8', '6', // exe_type = EXE_TYPE_WIN32_X86
// EquivalenceSource
0, 0, 0, 0, // src_skip size 0, 0, 0, 0, // src_skip size
0, 0, 0, 0, // dst_skip size 0, 0, 0, 0, // dst_skip size
0, 0, 0, 0, // copy_count size 0, 0, 0, 0, // copy_count size
// ExtraDataSource
0, 0, 0, 0, // extra_data size 0, 0, 0, 0, // extra_data size
// RawDeltaSource
0, 0, 0, 0, // raw_delta_skip size 0, 0, 0, 0, // raw_delta_skip size
0, 0, 0, 0, // raw_delta_diff size 0, 0, 0, 0, // raw_delta_diff size
// ReferenceDeltaSource
0, 0, 0, 0, // reference_delta size 0, 0, 0, 0, // reference_delta size
// PatchElementReader
0, 0, 0, 0, // pool count 0, 0, 0, 0, // pool count
}; };
......
...@@ -38,8 +38,8 @@ bool ParseElementMatch(BufferSource* source, ElementMatch* element_match) { ...@@ -38,8 +38,8 @@ bool ParseElementMatch(BufferSource* source, ElementMatch* element_match) {
// Caveat: Element offsets and lengths can still be invalid (e.g., exceeding // Caveat: Element offsets and lengths can still be invalid (e.g., exceeding
// archive bounds), but this will be checked later. // archive bounds), but this will be checked later.
element_match->old_element.offset = element_header.old_offset; element_match->old_element.offset = element_header.old_offset;
element_match->new_element.offset = element_header.new_offset;
element_match->old_element.size = element_header.old_length; element_match->old_element.size = element_header.old_length;
element_match->new_element.offset = element_header.new_offset;
element_match->new_element.size = element_header.new_length; element_match->new_element.size = element_header.new_length;
element_match->old_element.exe_type = exe_type; element_match->old_element.exe_type = exe_type;
element_match->new_element.exe_type = exe_type; element_match->new_element.exe_type = exe_type;
......
...@@ -34,20 +34,20 @@ struct PatchHeader { ...@@ -34,20 +34,20 @@ struct PatchHeader {
}; };
// Sanity check. // Sanity check.
static_assert(sizeof(PatchHeader) == 20, "PatchHeader is 20 bytes"); static_assert(sizeof(PatchHeader) == 20, "PatchHeader must be 20 bytes");
// Header for a patch element, found at the beginning of every patch element. // Header for a patch element, found at the beginning of every patch element.
struct PatchElementHeader { struct PatchElementHeader {
uint32_t old_offset; uint32_t old_offset;
uint32_t new_offset;
uint32_t old_length; uint32_t old_length;
uint32_t new_offset;
uint32_t new_length; uint32_t new_length;
uint32_t exe_type; uint32_t exe_type; // ExecutableType.
}; };
// Sanity check. // Sanity check.
static_assert(sizeof(PatchElementHeader) == 20, static_assert(sizeof(PatchElementHeader) == 20,
"PatchElementHeader is 28 bytes"); "PatchElementHeader must be 20 bytes");
#pragma pack(pop) #pragma pack(pop)
......
...@@ -23,10 +23,10 @@ bool SerializeElementMatch(const ElementMatch& element_match, ...@@ -23,10 +23,10 @@ bool SerializeElementMatch(const ElementMatch& element_match,
PatchElementHeader element_header; PatchElementHeader element_header;
element_header.old_offset = element_header.old_offset =
base::checked_cast<uint32_t>(element_match.old_element.offset); base::checked_cast<uint32_t>(element_match.old_element.offset);
element_header.new_offset =
base::checked_cast<uint32_t>(element_match.new_element.offset);
element_header.old_length = element_header.old_length =
base::checked_cast<uint32_t>(element_match.old_element.size); base::checked_cast<uint32_t>(element_match.old_element.size);
element_header.new_offset =
base::checked_cast<uint32_t>(element_match.new_element.offset);
element_header.new_length = element_header.new_length =
base::checked_cast<uint32_t>(element_match.new_element.size); base::checked_cast<uint32_t>(element_match.new_element.size);
element_header.exe_type = element_match.exe_type(); element_header.exe_type = element_match.exe_type();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment