aboutsummaryrefslogtreecommitdiff
path: root/disassembler_ztf.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 /disassembler_ztf.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 'disassembler_ztf.cc')
-rw-r--r--disassembler_ztf.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/disassembler_ztf.cc b/disassembler_ztf.cc
index 9f3c318..62e3ed4 100644
--- a/disassembler_ztf.cc
+++ b/disassembler_ztf.cc
@@ -7,11 +7,13 @@
#include <algorithm>
#include <cmath>
#include <iterator>
+#include <limits>
#include <numeric>
#include "base/logging.h"
#include "base/macros.h"
#include "base/numerics/checked_math.h"
+#include "base/numerics/safe_conversions.h"
#include "components/zucchini/algorithm.h"
#include "components/zucchini/buffer_source.h"
#include "components/zucchini/buffer_view.h"
@@ -384,6 +386,8 @@ bool ReadZtfHeader(ConstBufferView image) {
// Reject empty images and "ZTxtxTZ\n" (missing 't').
if (source.size() < kTotalMagicSize)
return false;
+ if (source.size() > std::numeric_limits<offset_t>::max())
+ return false;
return source.CheckNextBytes({'Z', 'T', 'x', 't'});
}
@@ -405,7 +409,7 @@ bool ZtfTranslator::Init(ConstBufferView image) {
// sentinel.
if (line_starts_.size() >= ztf::kMaxDimValue)
return false;
- line_starts_.push_back(i + 1);
+ line_starts_.push_back(base::checked_cast<offset_t>(i + 1));
// Check that the line length is reachable from an absolute reference.
if (line_starts_.back() - *std::next(line_starts_.rbegin()) >=
ztf::kMaxDimValue) {