summaryrefslogtreecommitdiffstats
path: root/chromium/base/big_endian.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-01-23 17:21:03 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-01-23 16:25:15 +0000
commitc551f43206405019121bd2b2c93714319a0a3300 (patch)
tree1f48c30631c421fd4bbb3c36da20183c8a2ed7d7 /chromium/base/big_endian.cc
parent7961cea6d1041e3e454dae6a1da660b453efd238 (diff)
BASELINE: Update Chromium to 79.0.3945.139
Change-Id: I336b7182fab9bca80b709682489c07db112eaca5 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/base/big_endian.cc')
-rw-r--r--chromium/base/big_endian.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/chromium/base/big_endian.cc b/chromium/base/big_endian.cc
index 514581fe415..9e9e672e490 100644
--- a/chromium/base/big_endian.cc
+++ b/chromium/base/big_endian.cc
@@ -4,6 +4,7 @@
#include "base/big_endian.h"
+#include "base/numerics/checked_math.h"
#include "base/strings/string_piece.h"
namespace base {
@@ -59,6 +60,29 @@ bool BigEndianReader::ReadU64(uint64_t* value) {
return Read(value);
}
+template <typename T>
+bool BigEndianReader::ReadLengthPrefixed(base::StringPiece* out) {
+ T t_len;
+ if (!Read(&t_len))
+ return false;
+ size_t len = strict_cast<size_t>(t_len);
+ const char* original_ptr = ptr_;
+ if (!Skip(len)) {
+ ptr_ -= sizeof(T);
+ return false;
+ }
+ *out = base::StringPiece(original_ptr, len);
+ return true;
+}
+
+bool BigEndianReader::ReadU8LengthPrefixed(base::StringPiece* out) {
+ return ReadLengthPrefixed<uint8_t>(out);
+}
+
+bool BigEndianReader::ReadU16LengthPrefixed(base::StringPiece* out) {
+ return ReadLengthPrefixed<uint16_t>(out);
+}
+
BigEndianWriter::BigEndianWriter(char* buf, size_t len)
: ptr_(buf), end_(ptr_ + len) {}