diff options
author | Kelvin Zhang <zhangkelvin@google.com> | 2021-11-02 21:28:18 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-11-02 21:28:18 +0000 |
commit | 58b4d19a6b6c8a6790c31bb3d6fcd13a8892239b (patch) | |
tree | 0a310ca653ef73c547d80da63c87fcb2c0636bcb /patch_read_write_unittest.cc | |
parent | 919a460e14c48a672288254f67db3e0c28166e82 (diff) | |
parent | d9eed84a58f90af50d84b02ca6a38d805b425a95 (diff) | |
download | zucchini-58b4d19a6b6c8a6790c31bb3d6fcd13a8892239b.tar.gz |
Merge remote-tracking branch 'aosp/upstream-main' into dev am: a90c04389f am: ddc43dc959 am: d9eed84a58
Original change: https://android-review.googlesource.com/c/platform/external/zucchini/+/1877854
Change-Id: I7de3d8374e868066777abb326d3e20c1e4b44803
Diffstat (limited to 'patch_read_write_unittest.cc')
-rw-r--r-- | patch_read_write_unittest.cc | 80 |
1 files changed, 71 insertions, 9 deletions
diff --git a/patch_read_write_unittest.cc b/patch_read_write_unittest.cc index 627513c..25e1fb0 100644 --- a/patch_read_write_unittest.cc +++ b/patch_read_write_unittest.cc @@ -63,6 +63,7 @@ ByteVector CreatePatchElement() { 0x03, 0, 0, 0, // new_offset 0x13, 0, 0, 0, // new_length 'P', 'x', '8', '6', // exe_type = EXE_TYPE_WIN32_X86 + 0x01, 0x00, // element version // EquivalenceSource 1, 0, 0, 0, // src_skip size 0x10, // src_skip content @@ -95,11 +96,12 @@ ByteVector CreatePatchElement() { ByteVector CreateElementMatch() { return { // PatchElementHeader - 0x01, 0, 0, 0, // old_offset - 0x02, 0, 0, 0, // old_length - 0x03, 0, 0, 0, // new_offset - 0x04, 0, 0, 0, // new_length - 'D', 'E', 'X', ' ', // exe_type = kExeTypeDex + 0x01, 0, 0, 0, // old_offset + 0x02, 0, 0, 0, // old_length + 0x03, 0, 0, 0, // new_offset + 0x04, 0, 0, 0, // new_length + 'D', 'E', 'X', ' ', // exe_type = kExeTypeDex + 0x01, 0x00, // element version }; } @@ -586,10 +588,26 @@ TEST(PatchElementTest, WrongExtraData) { } } +TEST(PatchElementTest, WrongVersion) { + // Bump element version to 2. + { + ByteVector data = CreatePatchElement(); + ModifyByte(offsetof(PatchElementHeader, version), 0x01, 0x02, &data); + TestInvalidInitialize<PatchElementReader>(&data); + } + // Bump element version to 0. + { + ByteVector data = CreatePatchElement(); + ModifyByte(offsetof(PatchElementHeader, version), 0x01, 0x00, &data); + TestInvalidInitialize<PatchElementReader>(&data); + } +} + TEST(EnsemblePatchTest, RawPatch) { ByteVector data = { // PatchHeader - 0x5A, 0x75, 0x63, 0x00, // magic + 0x5A, 0x75, 0x63, 0x63, // magic + 0x01, 0x00, 0x00, 0x00, // major/minor version 0x10, 0x32, 0x54, 0x76, // old_size 0x00, 0x11, 0x22, 0x33, // old_crc 0x01, 0, 0, 0, // new_size @@ -602,7 +620,8 @@ TEST(EnsemblePatchTest, RawPatch) { 0x02, 0, 0, 0, // old_length 0x00, 0, 0, 0, // new_offset 0x01, 0, 0, 0, // new_length - 'P', 'x', '8', '6', // exe_type = EXE_TYPE_WIN32_X86 + 'P', 'x', '8', '6', // exe_type = EXE_TYPE_WIN32_X8 + 0x01, 0x00, // element version // EquivalenceSource 0, 0, 0, 0, // src_skip size 0, 0, 0, 0, // dst_skip size @@ -624,6 +643,8 @@ TEST(EnsemblePatchTest, RawPatch) { PatchHeader header = ensemble_patch_reader.header(); EXPECT_EQ(PatchHeader::kMagic, header.magic); + EXPECT_EQ(kMajorVersion, header.major_version); + EXPECT_EQ(kMinorVersion, header.minor_version); EXPECT_EQ(0x76543210U, header.old_size); EXPECT_EQ(0x33221100U, header.old_crc); EXPECT_EQ(0x01U, header.new_size); @@ -647,7 +668,8 @@ TEST(EnsemblePatchTest, RawPatch) { TEST(EnsemblePatchTest, CheckFile) { ByteVector data = { // PatchHeader - 0x5A, 0x75, 0x63, 0x00, // magic + 0x5A, 0x75, 0x63, 0x63, // magic + 0x01, 0x00, 0x00, 0x00, // major/minor version 0x05, 0x00, 0x00, 0x00, // old_size 0xDF, 0x13, 0xE4, 0x10, // old_crc 0x03, 0x00, 0x00, 0x00, // new_size @@ -661,6 +683,7 @@ TEST(EnsemblePatchTest, CheckFile) { 0x00, 0, 0, 0, // new_offset 0x03, 0, 0, 0, // new_length 'P', 'x', '8', '6', // exe_type = EXE_TYPE_WIN32_X86 + 0x01, 0x00, // element version // EquivalenceSource 0, 0, 0, 0, // src_skip size 0, 0, 0, 0, // dst_skip size @@ -695,7 +718,45 @@ TEST(EnsemblePatchTest, CheckFile) { TEST(EnsemblePatchTest, InvalidMagic) { ByteVector data = { // PatchHeader - 0x42, 0x42, 0x42, 0x00, // magic + 0x42, 0x42, 0x42, 0x42, // magic + 0x01, 0x00, 0x00, 0x00, // major/minor version + 0x10, 0x32, 0x54, 0x76, // old_size + 0x00, 0x11, 0x22, 0x33, // old_crc + 0x03, 0x00, 0x00, 0x00, // new_size + 0x44, 0x55, 0x66, 0x77, // new_crc + + 1, 0, 0, 0, // number of element + + // PatchElementHeader + 0x01, 0, 0, 0, // old_offset + 0x02, 0, 0, 0, // old_length + 0x00, 0, 0, 0, // new_offset + 0x03, 0, 0, 0, // new_length + 'P', 'x', '8', '6', // exe_type = EXE_TYPE_WIN32_X86 + 0x01, 0x00, // element version + // EquivalenceSource + 0, 0, 0, 0, // src_skip size + 0, 0, 0, 0, // dst_skip size + 0, 0, 0, 0, // copy_count size + // ExtraDataSource + 0, 0, 0, 0, // extra_data size + // RawDeltaSource + 0, 0, 0, 0, // raw_delta_skip size + 0, 0, 0, 0, // raw_delta_diff size + // ReferenceDeltaSource + 0, 0, 0, 0, // reference_delta size + // PatchElementReader + 0, 0, 0, 0, // pool count + }; + + TestInvalidInitialize<EnsemblePatchReader>(&data); +} + +TEST(EnsemblePatchTest, InvalidVersion) { + ByteVector data = { + // PatchHeader + 0x5A, 0x75, 0x63, 0x63, // magic + 0x02, 0x01, 0x00, 0x00, // major/minor version 0x10, 0x32, 0x54, 0x76, // old_size 0x00, 0x11, 0x22, 0x33, // old_crc 0x03, 0x00, 0x00, 0x00, // new_size @@ -709,6 +770,7 @@ TEST(EnsemblePatchTest, InvalidMagic) { 0x00, 0, 0, 0, // new_offset 0x03, 0, 0, 0, // new_length 'P', 'x', '8', '6', // exe_type = EXE_TYPE_WIN32_X86 + 0x01, 0x00, // element version // EquivalenceSource 0, 0, 0, 0, // src_skip size 0, 0, 0, 0, // dst_skip size |