From 5692649b9b778237b83fb21efc003f660c7fc3ce Mon Sep 17 00:00:00 2001 From: Harald Alvestrand Date: Tue, 19 Dec 2023 15:32:38 +0000 Subject: [PATCH] Revert^2 "Remove deprecated ByteBufferReader and ByteBufferWriter functions" This reverts commit ca58f0eb9da32023752c978ac81f4df39a38e721. Reason for revert: Webkit Linux Leak bot seems flaky Original change's description: > Revert "Remove deprecated ByteBufferReader and ByteBufferWriter functions" > > This reverts commit e0e03ba73a0859924a55c4dfa4ce20ff80820f0b. > > Reason for revert: Speculative rollback (breaks WebKit Linux Leak) > > Original change's description: > > Remove deprecated ByteBufferReader and ByteBufferWriter functions > > > > This completes the conversion of ByteBufferReader and ByteBufferWriter > > to uint8_t. > > > > No-Try: True > > Bug: webrtc:15661 > > Change-Id: I4152a8a4fd2462282d4107b3c2eed19acc8b29b0 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/331640 > > Commit-Queue: Harald Alvestrand > > Reviewed-by: Tomas Gunnarsson > > Cr-Commit-Position: refs/heads/main@{#41403} > > Bug: webrtc:15661, chromium:1513059 > Change-Id: I3938b8209f5cc1596307deadac157a8f6c2b2253 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/331940 > Owners-Override: Mirko Bonadei > Bot-Commit: rubber-stamper@appspot.gserviceaccount.com > Commit-Queue: Mirko Bonadei > Cr-Commit-Position: refs/heads/main@{#41411} Bug: webrtc:15661, chromium:1513059 Change-Id: I702c695ba0f83bba5721b18ebd994435a8932c0a Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/331980 Commit-Queue: Harald Alvestrand Bot-Commit: rubber-stamper@appspot.gserviceaccount.com Reviewed-by: Mirko Bonadei Cr-Commit-Position: refs/heads/main@{#41419} --- api/transport/stun.cc | 2 +- p2p/base/pseudo_tcp.cc | 2 +- rtc_base/byte_buffer.cc | 4 ---- rtc_base/byte_buffer.h | 19 +++---------------- rtc_base/server_socket_adapters.cc | 4 +++- 5 files changed, 8 insertions(+), 23 deletions(-) diff --git a/api/transport/stun.cc b/api/transport/stun.cc index 97da5082e7..c359fd359d 100644 --- a/api/transport/stun.cc +++ b/api/transport/stun.cc @@ -587,7 +587,7 @@ bool StunMessage::AddFingerprint() { bool StunMessage::Read(ByteBufferReader* buf) { // Keep a copy of the buffer data around for later verification. - buffer_.assign(buf->Data(), buf->Length()); + buffer_.assign(reinterpret_cast(buf->Data()), buf->Length()); if (!buf->ReadUInt16(&type_)) { return false; diff --git a/p2p/base/pseudo_tcp.cc b/p2p/base/pseudo_tcp.cc index 9dec580b77..3aaa2ad065 100644 --- a/p2p/base/pseudo_tcp.cc +++ b/p2p/base/pseudo_tcp.cc @@ -1213,7 +1213,7 @@ void PseudoTcp::parseOptions(const char* data, uint32_t len) { // Content of this option. if (opt_len <= buf.Length()) { - applyOption(kind, buf.Data(), opt_len); + applyOption(kind, reinterpret_cast(buf.Data()), opt_len); buf.Consume(opt_len); } else { RTC_LOG(LS_ERROR) << "Invalid option length received."; diff --git a/rtc_base/byte_buffer.cc b/rtc_base/byte_buffer.cc index 8c3595617c..121097bae9 100644 --- a/rtc_base/byte_buffer.cc +++ b/rtc_base/byte_buffer.cc @@ -139,10 +139,6 @@ bool ByteBufferReader::ReadBytes(rtc::ArrayView val) { return ReadBytes(val.data(), val.size()); } -bool ByteBufferReader::ReadBytes(char* val, size_t len) { - return ReadBytes(reinterpret_cast(val), len); -} - // Private function supporting the other Read* functions. bool ByteBufferReader::ReadBytes(uint8_t* val, size_t len) { if (len > Length()) { diff --git a/rtc_base/byte_buffer.h b/rtc_base/byte_buffer.h index 9e169f221b..6df285ae6d 100644 --- a/rtc_base/byte_buffer.h +++ b/rtc_base/byte_buffer.h @@ -100,12 +100,6 @@ class ByteBufferWriterT { void WriteBytes(const uint8_t* val, size_t len) { WriteBytesInternal(reinterpret_cast(val), len); } - // For backwards compatibility: Write an array of char - // TODO(bugs.webrtc.org/15665): Remove when users converted - [[deprecated("Use WriteString")]] void WriteBytes(const char* val, - size_t len) { - WriteBytesInternal(reinterpret_cast(val), len); - } // Reserves the given number of bytes and returns a value_type* that can be // written into. Useful for functions that require a value_type* buffer and @@ -163,14 +157,10 @@ class ByteBufferReader { ByteBufferReader(const ByteBufferReader&) = delete; ByteBufferReader& operator=(const ByteBufferReader&) = delete; - // Returns start of unprocessed data. - // TODO(bugs.webrtc.org/15661): Deprecate and remove. - const char* Data() const { - return reinterpret_cast(bytes_ + start_); - } + const uint8_t* Data() const { return bytes_ + start_; } // Returns number of unprocessed bytes. size_t Length() const { return end_ - start_; } - // Returns a view of the unprocessed data. + // Returns a view of the unprocessed data. Does not move current position. rtc::ArrayView DataView() const { return rtc::ArrayView(bytes_ + start_, end_ - start_); } @@ -183,11 +173,8 @@ class ByteBufferReader { bool ReadUInt32(uint32_t* val); bool ReadUInt64(uint64_t* val); bool ReadUVarint(uint64_t* val); + // Copies the val.size() next bytes into val.data(). bool ReadBytes(rtc::ArrayView val); - // For backwards compatibility. - // TODO(bugs.webrtc.org/15661): Deprecate and remove. - [[deprecated("Read using ArrayView")]] bool ReadBytes(char* val, size_t len); - // Appends next `len` bytes from the buffer to `val`. Returns false // if there is less than `len` bytes left. bool ReadString(std::string* val, size_t len); diff --git a/rtc_base/server_socket_adapters.cc b/rtc_base/server_socket_adapters.cc index 47c19cbed9..0bef752f1e 100644 --- a/rtc_base/server_socket_adapters.cc +++ b/rtc_base/server_socket_adapters.cc @@ -75,7 +75,9 @@ void AsyncSocksProxyServerSocket::ProcessInput(char* data, size_t* len) { // Consume parsed data *len = response.Length(); - memmove(data, response.Data(), *len); + if (response.Length() > 0) { + memmove(data, response.DataView().data(), *len); + } } void AsyncSocksProxyServerSocket::DirectSend(const ByteBufferWriter& buf) {