Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(530)

Unified Diff: components/cronet/android/url_request_adapter.cc

Issue 1732493002: Prevent URLFetcher::AppendChunkedData from dereferencing NULL pointers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix Cronet Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/cronet/android/url_request_adapter.cc
diff --git a/components/cronet/android/url_request_adapter.cc b/components/cronet/android/url_request_adapter.cc
index d6576374ba2a3dd62a6cff3aae2c799ba678d4b4..acfb00888eaefc8e0ee2c81aec539dd7ab0ed566 100644
--- a/components/cronet/android/url_request_adapter.cc
+++ b/components/cronet/android/url_request_adapter.cc
@@ -131,12 +131,12 @@ void URLRequestAdapter::OnAppendChunk(const scoped_ptr<char[]> bytes,
DCHECK(OnNetworkThread());
// Request could have completed and been destroyed on the network thread
// while appendChunk was posting the task from an application thread.
- if (!url_request_) {
+ if (!chunked_upload_writer_->AppendData(bytes.get(), bytes_len,
mef 2016/03/03 16:49:32 Why we don't need !url_request_ check anymore?
mmenke 2016/03/03 17:04:45 Because chunked_upload_writer_ wraps a WeakPtr. I
+ is_last_chunk)) {
VLOG(1) << "Cannot append chunk to destroyed request: "
<< url_.possibly_invalid_spec().c_str();
return;
}
- url_request_->AppendChunkToUpload(bytes.get(), bytes_len, is_last_chunk);
}
void URLRequestAdapter::OnInitiateConnection() {
@@ -166,7 +166,10 @@ void URLRequestAdapter::OnInitiateConnection() {
if (upload_data_stream_) {
url_request_->set_upload(std::move(upload_data_stream_));
} else if (chunked_upload_) {
- url_request_->EnableChunkedUpload();
+ scoped_ptr<net::ChunkedUploadDataStream> chunked_upload_data_stream(
+ new net::ChunkedUploadDataStream(0));
+ chunked_upload_writer_ = chunked_upload_data_stream->CreateWriter();
+ url_request_->set_upload(std::move(chunked_upload_data_stream));
}
url_request_->SetPriority(priority_);

Powered by Google App Engine
This is Rietveld 408576698