diff --git a/api/transport/stun.cc b/api/transport/stun.cc index c359fd359d..97da5082e7 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(reinterpret_cast(buf->Data()), buf->Length()); + buffer_.assign(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 3aaa2ad065..9dec580b77 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, reinterpret_cast(buf.Data()), opt_len); + applyOption(kind, 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 121097bae9..8c3595617c 100644 --- a/rtc_base/byte_buffer.cc +++ b/rtc_base/byte_buffer.cc @@ -139,6 +139,10 @@ 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 6df285ae6d..9e169f221b 100644 --- a/rtc_base/byte_buffer.h +++ b/rtc_base/byte_buffer.h @@ -100,6 +100,12 @@ 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 @@ -157,10 +163,14 @@ class ByteBufferReader { ByteBufferReader(const ByteBufferReader&) = delete; ByteBufferReader& operator=(const ByteBufferReader&) = delete; - const uint8_t* Data() const { return bytes_ + start_; } + // Returns start of unprocessed data. + // TODO(bugs.webrtc.org/15661): Deprecate and remove. + const char* Data() const { + return reinterpret_cast(bytes_ + start_); + } // Returns number of unprocessed bytes. size_t Length() const { return end_ - start_; } - // Returns a view of the unprocessed data. Does not move current position. + // Returns a view of the unprocessed data. rtc::ArrayView DataView() const { return rtc::ArrayView(bytes_ + start_, end_ - start_); } @@ -173,8 +183,11 @@ 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 0bef752f1e..47c19cbed9 100644 --- a/rtc_base/server_socket_adapters.cc +++ b/rtc_base/server_socket_adapters.cc @@ -75,9 +75,7 @@ void AsyncSocksProxyServerSocket::ProcessInput(char* data, size_t* len) { // Consume parsed data *len = response.Length(); - if (response.Length() > 0) { - memmove(data, response.DataView().data(), *len); - } + memmove(data, response.Data(), *len); } void AsyncSocksProxyServerSocket::DirectSend(const ByteBufferWriter& buf) {