From 261f4df0801de80106dd28a47914131c9b897058 Mon Sep 17 00:00:00 2001 From: Alexei Svitkine Date: Tue, 16 Nov 2021 22:01:32 +0000 Subject: Update callsites to use WIN_-prefixed base::File flags. The flags have been renamed to make it clear that they only apply to Windows (see associated bug). If you're reviewing this CL, please verify your code's usage of the flag to ensure that the behavior is as intended. Thanks! This CL was uploaded by git cl split. R=huangs@chromium.org Bug: 1244149 Change-Id: I08d4f6e886a699d852470e08025edb85b0a695ab Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3279224 Auto-Submit: Alexei Svitkine Reviewed-by: Samuel Huang Commit-Queue: Samuel Huang Cr-Commit-Position: refs/heads/main@{#942295} NOKEYCHECK=True GitOrigin-RevId: 9f7f7c8f781c5b7946dc9be3f80cc28cda9e971c --- mapped_file_unittest.cc | 4 ++-- zucchini_commands.cc | 10 +++++----- zucchini_integration.cc | 13 +++++++------ 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/mapped_file_unittest.cc b/mapped_file_unittest.cc index e3ee6dc..56014b0 100644 --- a/mapped_file_unittest.cc +++ b/mapped_file_unittest.cc @@ -33,7 +33,7 @@ TEST_F(MappedFileWriterTest, Keep) { { using base::File; File file(file_path_, File::FLAG_CREATE_ALWAYS | File::FLAG_READ | - File::FLAG_WRITE | File::FLAG_SHARE_DELETE | + File::FLAG_WRITE | File::FLAG_WIN_SHARE_DELETE | File::FLAG_CAN_DELETE_ON_CLOSE); MappedFileWriter file_writer(file_path_, std::move(file), 10); EXPECT_FALSE(file_writer.HasError()); @@ -49,7 +49,7 @@ TEST_F(MappedFileWriterTest, DeleteOnClose) { { using base::File; File file(file_path_, File::FLAG_CREATE_ALWAYS | File::FLAG_READ | - File::FLAG_WRITE | File::FLAG_SHARE_DELETE | + File::FLAG_WRITE | File::FLAG_WIN_SHARE_DELETE | File::FLAG_CAN_DELETE_ON_CLOSE); MappedFileWriter file_writer(file_path_, std::move(file), 10); EXPECT_FALSE(file_writer.HasError()); diff --git a/zucchini_commands.cc b/zucchini_commands.cc index 0699cbe..225fc25 100644 --- a/zucchini_commands.cc +++ b/zucchini_commands.cc @@ -60,7 +60,7 @@ zucchini::status::Code MainRead(MainParams params) { CHECK_EQ(1U, params.file_paths.size()); base::File input_file(params.file_paths[0], base::File::FLAG_OPEN | base::File::FLAG_READ | - base::File::FLAG_SHARE_DELETE); + base::File::FLAG_WIN_SHARE_DELETE); zucchini::MappedFileReader input(std::move(input_file)); if (input.HasError()) { LOG(ERROR) << "Error with file " << params.file_paths[0].value() << ": " @@ -80,7 +80,7 @@ zucchini::status::Code MainDetect(MainParams params) { CHECK_EQ(1U, params.file_paths.size()); base::File input_file(params.file_paths[0], base::File::FLAG_OPEN | base::File::FLAG_READ | - base::File::FLAG_SHARE_DELETE); + base::File::FLAG_WIN_SHARE_DELETE); zucchini::MappedFileReader input(std::move(input_file)); if (input.HasError()) { LOG(ERROR) << "Error with file " << params.file_paths[0].value() << ": " @@ -100,7 +100,7 @@ zucchini::status::Code MainMatch(MainParams params) { CHECK_EQ(2U, params.file_paths.size()); using base::File; File old_file(params.file_paths[0], File::FLAG_OPEN | File::FLAG_READ | - base::File::FLAG_SHARE_DELETE); + base::File::FLAG_WIN_SHARE_DELETE); zucchini::MappedFileReader old_image(std::move(old_file)); if (old_image.HasError()) { LOG(ERROR) << "Error with file " << params.file_paths[0].value() << ": " @@ -108,7 +108,7 @@ zucchini::status::Code MainMatch(MainParams params) { return zucchini::status::kStatusFileReadError; } File new_file(params.file_paths[1], File::FLAG_OPEN | File::FLAG_READ | - base::File::FLAG_SHARE_DELETE); + base::File::FLAG_WIN_SHARE_DELETE); zucchini::MappedFileReader new_image(std::move(new_file)); if (new_image.HasError()) { LOG(ERROR) << "Error with file " << params.file_paths[1].value() << ": " @@ -131,7 +131,7 @@ zucchini::status::Code MainCrc32(MainParams params) { CHECK_EQ(1U, params.file_paths.size()); base::File image_file(params.file_paths[0], base::File::FLAG_OPEN | base::File::FLAG_READ | - base::File::FLAG_SHARE_DELETE); + base::File::FLAG_WIN_SHARE_DELETE); zucchini::MappedFileReader image(std::move(image_file)); if (image.HasError()) { LOG(ERROR) << "Error with file " << params.file_paths[0].value() << ": " diff --git a/zucchini_integration.cc b/zucchini_integration.cc index bf28b3c..c654a08 100644 --- a/zucchini_integration.cc +++ b/zucchini_integration.cc @@ -184,11 +184,12 @@ status::Code Generate(const base::FilePath& old_path, std::string imposed_matches) { using base::File; File old_file(old_path, File::FLAG_OPEN | File::FLAG_READ | - base::File::FLAG_SHARE_DELETE); + base::File::FLAG_WIN_SHARE_DELETE); File new_file(new_path, File::FLAG_OPEN | File::FLAG_READ | - base::File::FLAG_SHARE_DELETE); + base::File::FLAG_WIN_SHARE_DELETE); File patch_file(patch_path, File::FLAG_CREATE_ALWAYS | File::FLAG_READ | - File::FLAG_WRITE | File::FLAG_SHARE_DELETE | + File::FLAG_WRITE | + File::FLAG_WIN_SHARE_DELETE | File::FLAG_CAN_DELETE_ON_CLOSE); const FileNames file_names(old_path, new_path, patch_path); return GenerateCommon(std::move(old_file), std::move(new_file), @@ -211,11 +212,11 @@ status::Code Apply(const base::FilePath& old_path, bool force_keep) { using base::File; File old_file(old_path, File::FLAG_OPEN | File::FLAG_READ | - base::File::FLAG_SHARE_DELETE); + base::File::FLAG_WIN_SHARE_DELETE); File patch_file(patch_path, File::FLAG_OPEN | File::FLAG_READ | - base::File::FLAG_SHARE_DELETE); + base::File::FLAG_WIN_SHARE_DELETE); File new_file(new_path, File::FLAG_CREATE_ALWAYS | File::FLAG_READ | - File::FLAG_WRITE | File::FLAG_SHARE_DELETE | + File::FLAG_WRITE | File::FLAG_WIN_SHARE_DELETE | File::FLAG_CAN_DELETE_ON_CLOSE); const FileNames file_names(old_path, new_path, patch_path); return ApplyCommon(std::move(old_file), std::move(patch_file), -- cgit v1.2.3 From 9a6bb5673d3441e0aee2c3e79e6dec027840d7e1 Mon Sep 17 00:00:00 2001 From: Samuel Huang Date: Wed, 17 Nov 2021 16:20:51 +0000 Subject: [Zucchini] Move version info to a separate file. This CL moves zucchini::{kMajorVersion, kMinorVersion, kInvalidVersion} to a standalone file version_info.h. The location should remain stable. Stability is important so that: * External tools can determine Zucchini versoin from source, i.e., the file serves as an implicit API. * Running 'git log' on version_info.h will point to CLs that implement or enable patch break changes. Bug: 1231882 Change-Id: I13243a5627870a31d8789d3579f1a50cc0e52bd5 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3287124 Commit-Queue: Samuel Huang Reviewed-by: Calder Kitagawa Reviewed-by: Etienne Pierre-Doray Cr-Commit-Position: refs/heads/main@{#942645} NOKEYCHECK=True GitOrigin-RevId: 0b4473c4e1683729ac9f81257ba48e1d3e34418f --- BUILD.gn | 1 + element_detection.cc | 2 +- main_utils.cc | 2 +- patch_read_write_unittest.cc | 1 + patch_reader.cc | 1 + patch_utils.h | 12 +----------- patch_writer.cc | 1 + version_info.h | 30 ++++++++++++++++++++++++++++++ 8 files changed, 37 insertions(+), 13 deletions(-) create mode 100644 version_info.h diff --git a/BUILD.gn b/BUILD.gn index 54b06ab..9fa2ea9 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -97,6 +97,7 @@ static_library("zucchini_lib") { "type_elf.h", "type_win_pe.h", "typed_value.h", + "version_info.h", "zucchini.h", "zucchini_apply.cc", "zucchini_apply.h", diff --git a/element_detection.cc b/element_detection.cc index 5548610..2d260e4 100644 --- a/element_detection.cc +++ b/element_detection.cc @@ -9,7 +9,7 @@ #include "components/zucchini/buildflags.h" #include "components/zucchini/disassembler.h" #include "components/zucchini/disassembler_no_op.h" -#include "components/zucchini/patch_utils.h" +#include "components/zucchini/version_info.h" #if BUILDFLAG(ENABLE_DEX) #include "components/zucchini/disassembler_dex.h" diff --git a/main_utils.cc b/main_utils.cc index b499817..48b52e1 100644 --- a/main_utils.cc +++ b/main_utils.cc @@ -22,7 +22,7 @@ #include "base/time/time.h" #include "build/build_config.h" #include "components/zucchini/io_utils.h" -#include "components/zucchini/patch_utils.h" +#include "components/zucchini/version_info.h" #include "components/zucchini/zucchini_commands.h" #if defined(OS_WIN) diff --git a/patch_read_write_unittest.cc b/patch_read_write_unittest.cc index 25e1fb0..cce590d 100644 --- a/patch_read_write_unittest.cc +++ b/patch_read_write_unittest.cc @@ -11,6 +11,7 @@ #include #include +#include "components/zucchini/version_info.h" #include "testing/gtest/include/gtest/gtest.h" namespace zucchini { diff --git a/patch_reader.cc b/patch_reader.cc index 8fd9b57..50ee199 100644 --- a/patch_reader.cc +++ b/patch_reader.cc @@ -11,6 +11,7 @@ #include "components/zucchini/algorithm.h" #include "components/zucchini/crc32.h" #include "components/zucchini/element_detection.h" +#include "components/zucchini/version_info.h" namespace zucchini { diff --git a/patch_utils.h b/patch_utils.h index 822fedc..82b2b48 100644 --- a/patch_utils.h +++ b/patch_utils.h @@ -11,20 +11,10 @@ #include #include "components/zucchini/image_utils.h" +#include "components/zucchini/version_info.h" namespace zucchini { -// A change in major version indicates breaking changes such that a patch -// definitely cannot be applied by a zucchini binary whose major version doesn't -// match. -enum : uint16_t { kMajorVersion = 1 }; -// A change in minor version indicates possibly breaking changes at the element -// level, such that it may not be possible to apply a patch whose minor version -// doesn't match this version. To determine if a given patch may be applied with -// this version, VerifyPatch() should be called. -enum : uint16_t { kMinorVersion = 0 }; -enum : uint16_t { kInvalidVersion = 0xffff }; - // 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 04f3244..186ece8 100644 --- a/patch_writer.cc +++ b/patch_writer.cc @@ -11,6 +11,7 @@ #include "base/numerics/safe_conversions.h" #include "components/zucchini/crc32.h" #include "components/zucchini/element_detection.h" +#include "components/zucchini/version_info.h" namespace zucchini { diff --git a/version_info.h b/version_info.h new file mode 100644 index 0000000..c6d2fac --- /dev/null +++ b/version_info.h @@ -0,0 +1,30 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_ZUCCHINI_VERSION_INFO_H_ +#define COMPONENTS_ZUCCHINI_VERSION_INFO_H_ + +// This file serves as a stable location for main Zucchini version constants, +// whose names and types should also be stable. These allow external tools to +// determine Zucchini version at compile time by inclusion or parsing. + +namespace zucchini { + +// A change in major version indicates breaking changes such that a patch +// definitely cannot be applied by a zucchini binary whose major version doesn't +// match. +enum : uint16_t { kMajorVersion = 1 }; + +// A change in minor version indicates possibly breaking changes at the element +// level, such that it may not be possible to apply a patch whose minor version +// doesn't match this version. To determine if a given patch may be applied with +// this version, VerifyPatch() should be called. +enum : uint16_t { kMinorVersion = 0 }; + +// A empty or error value for major or minor version numbers. +enum : uint16_t { kInvalidVersion = 0xffff }; + +} // namespace zucchini + +#endif // COMPONENTS_ZUCCHINI_VERSION_INFO_H_ -- cgit v1.2.3