Use string_view::substr when making string_views out of other strings
substr is both more convenient and also slightly safer when C++ hardening is enabled.
PiperOrigin-RevId: 697644082
diff --git a/quiche/http2/adapter/oghttp2_session.cc b/quiche/http2/adapter/oghttp2_session.cc
index 6d9bb13..7c4fabf 100644
--- a/quiche/http2/adapter/oghttp2_session.cc
+++ b/quiche/http2/adapter/oghttp2_session.cc
@@ -778,8 +778,7 @@
}
if (static_cast<size_t>(result) < frame.size()) {
// The frame was partially written, so the rest must be buffered.
- buffered_data_.Append(
- absl::string_view(frame.data() + result, frame.size() - result));
+ buffered_data_.Append(absl::string_view(frame).substr(result));
return SendResult::SEND_BLOCKED;
}
}
diff --git a/quiche/quic/core/crypto/crypto_secret_boxer.cc b/quiche/quic/core/crypto/crypto_secret_boxer.cc
index e133a7f..bdc87e0 100644
--- a/quiche/quic/core/crypto/crypto_secret_boxer.cc
+++ b/quiche/quic/core/crypto/crypto_secret_boxer.cc
@@ -129,14 +129,12 @@
absl::ReaderMutexLock l(&lock_);
for (const bssl::UniquePtr<EVP_AEAD_CTX>& ctx : state_->ctxs) {
size_t bytes_written;
- if (EVP_AEAD_CTX_open(ctx.get(),
- reinterpret_cast<uint8_t*>(
- const_cast<char*>(out_storage->data())),
- &bytes_written, ciphertext_len, nonce,
- kSIVNonceSize, ciphertext, ciphertext_len, nullptr,
- 0)) {
+ if (EVP_AEAD_CTX_open(
+ ctx.get(), reinterpret_cast<uint8_t*>(out_storage->data()),
+ &bytes_written, ciphertext_len, nonce, kSIVNonceSize, ciphertext,
+ ciphertext_len, nullptr, 0)) {
ok = true;
- *out = absl::string_view(out_storage->data(), bytes_written);
+ *out = absl::string_view(*out_storage).substr(0, bytes_written);
break;
}
diff --git a/quiche/quic/tools/quic_memory_cache_backend.cc b/quiche/quic/tools/quic_memory_cache_backend.cc
index 5290636..1f64bf6 100644
--- a/quiche/quic/tools/quic_memory_cache_backend.cc
+++ b/quiche/quic/tools/quic_memory_cache_backend.cc
@@ -40,7 +40,7 @@
<< file_name_;
return;
}
- file_contents_ = *maybe_file_contents;
+ file_contents_ = *std::move(maybe_file_contents);
// First read the headers.
for (size_t start = 0; start < file_contents_.length();) {
@@ -54,12 +54,11 @@
if (file_contents_[pos - 1] == '\r') {
len -= 1;
}
- absl::string_view line(file_contents_.data() + start, len);
+ auto line = absl::string_view(file_contents_).substr(start, len);
start = pos + 1;
// Headers end with an empty line.
if (line.empty()) {
- body_ = absl::string_view(file_contents_.data() + start,
- file_contents_.size() - start);
+ body_ = absl::string_view(file_contents_).substr(start);
break;
}
// Extract the status from the HTTP first line.
@@ -137,8 +136,7 @@
if (it == responses_.end()) {
uint64_t ignored = 0;
if (generate_bytes_response_) {
- if (absl::SimpleAtoi(absl::string_view(path.data() + 1, path.size() - 1),
- &ignored)) {
+ if (absl::SimpleAtoi(path.substr(1), &ignored)) {
// The actual parsed length is ignored here and will be recomputed
// by the caller.
return generate_bytes_response_.get();