aboutsummaryrefslogtreecommitdiff
path: root/reloc_win32.cc
diff options
context:
space:
mode:
authorEtienne Pierre-doray <etiennep@chromium.org>2018-09-11 13:40:46 +0000
committerCopybara-Service <copybara-worker@google.com>2021-07-25 20:36:57 -0700
commit186ef14d1a5ef23d04684a4548d8c1e7cdc62d15 (patch)
treea5e9034beba2842b1f177670e91d6e0c4fbb029f /reloc_win32.cc
parent725a8734514bb88b5acd976040e6710e26b2e3b5 (diff)
downloadzucchini-186ef14d1a5ef23d04684a4548d8c1e7cdc62d15.tar.gz
[Zucchini]: Fix implicit conversions.
Fix compile error with -Wshorten-64-to-32. Bug: 881008 Change-Id: I52a1bab9cb7b4cb67ea4c275143390d42b192120 Reviewed-on: https://chromium-review.googlesource.com/1216524 Reviewed-by: Will Harris <wfh@chromium.org> Reviewed-by: Samuel Huang <huangs@chromium.org> Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> Cr-Commit-Position: refs/heads/master@{#590285} NOKEYCHECK=True GitOrigin-RevId: f6c70a2cc49b3a1765aa38763532e948c48a65a1
Diffstat (limited to 'reloc_win32.cc')
-rw-r--r--reloc_win32.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/reloc_win32.cc b/reloc_win32.cc
index 2f993ad..dcf40bb 100644
--- a/reloc_win32.cc
+++ b/reloc_win32.cc
@@ -40,7 +40,8 @@ bool RelocRvaReaderWin32::FindRelocBlocks(
ConstBufferView reloc_data = image[reloc_region];
reloc_block_offsets->clear();
while (reloc_data.size() >= sizeof(pe::RelocHeader)) {
- reloc_block_offsets->push_back(reloc_data.begin() - image.begin());
+ reloc_block_offsets->push_back(
+ base::checked_cast<offset_t>(reloc_data.begin() - image.begin()));
auto size = reloc_data.read<pe::RelocHeader>(0).size;
// |size| must be aligned to 4-bytes.
if (size < sizeof(pe::RelocHeader) || size % 4 || size > reloc_data.size())
@@ -78,7 +79,8 @@ RelocRvaReaderWin32::RelocRvaReaderWin32(
return; // Nothing left.
// Skip |cur_reloc_units_| to |lo|, truncating up.
- offset_t cur_reloc_units_offset = cur_reloc_units_.begin() - image_.begin();
+ offset_t cur_reloc_units_offset =
+ base::checked_cast<offset_t>(cur_reloc_units_.begin() - image_.begin());
if (lo > cur_reloc_units_offset) {
offset_t delta =
AlignCeil<offset_t>(lo - cur_reloc_units_offset, kRelocUnitSize);
@@ -100,7 +102,8 @@ base::Optional<RelocUnitWin32> RelocRvaReaderWin32::GetNext() {
if (end_it_ - cur_reloc_units_.begin() < kRelocUnitSize)
return base::nullopt;
// "Inner loop" to extract single reloc unit.
- offset_t location = cur_reloc_units_.begin() - image_.begin();
+ offset_t location =
+ base::checked_cast<offset_t>(cur_reloc_units_.begin() - image_.begin());
uint16_t entry = cur_reloc_units_.read<uint16_t>(0);
uint8_t type = static_cast<uint8_t>(entry >> 12);
rva_t rva = rva_hi_bits_ + (entry & 0xFFF);