diff options
author | ericu@chromium.org <ericu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-24 02:02:15 +0000 |
---|---|---|
committer | ericu@chromium.org <ericu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-24 02:02:15 +0000 |
commit | 1978b883c3f0bc39ae116c2359a8ea264249b4a9 (patch) | |
tree | 99622b904ffc302c585c3adbd4acf7b03d885b80 /content/common | |
parent | 374372ab9713c90a71a03ff4705ad8e46faf93c3 (diff) | |
download | chromium_src-1978b883c3f0bc39ae116c2359a8ea264249b4a9.zip chromium_src-1978b883c3f0bc39ae116c2359a8ea264249b4a9.tar.gz chromium_src-1978b883c3f0bc39ae116c2359a8ea264249b4a9.tar.bz2 |
Prevent zero-length items from being appended to a blob.
BUG=128266
TEST=as in the bug
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=138554
Review URL: https://chromiumcodereview.appspot.com/10386183
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@138702 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/common')
-rw-r--r-- | content/common/fileapi/webblobregistry_impl.cc | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/content/common/fileapi/webblobregistry_impl.cc b/content/common/fileapi/webblobregistry_impl.cc index 924e919..9a80fb9 100644 --- a/content/common/fileapi/webblobregistry_impl.cc +++ b/content/common/fileapi/webblobregistry_impl.cc @@ -39,6 +39,8 @@ void WebBlobRegistryImpl::registerBlobURL( case WebBlobData::Item::TypeData: { // WebBlobData does not allow partial data items. DCHECK(!data_item.offset && data_item.length == -1); + if (data_item.data.size() == 0) + break; if (data_item.data.size() < kLargeThresholdBytes) { item.SetToData(data_item.data.data(), data_item.data.size()); child_thread_->Send(new BlobHostMsg_AppendBlobDataItem(url, item)); @@ -64,12 +66,14 @@ void WebBlobRegistryImpl::registerBlobURL( break; } case WebBlobData::Item::TypeFile: - item.SetToFile( - webkit_glue::WebStringToFilePath(data_item.filePath), - static_cast<uint64>(data_item.offset), - static_cast<uint64>(data_item.length), - base::Time::FromDoubleT(data_item.expectedModificationTime)); - child_thread_->Send(new BlobHostMsg_AppendBlobDataItem(url, item)); + if (data_item.length) { + item.SetToFile( + webkit_glue::WebStringToFilePath(data_item.filePath), + static_cast<uint64>(data_item.offset), + static_cast<uint64>(data_item.length), + base::Time::FromDoubleT(data_item.expectedModificationTime)); + child_thread_->Send(new BlobHostMsg_AppendBlobDataItem(url, item)); + } break; case WebBlobData::Item::TypeBlob: if (data_item.length) { @@ -77,8 +81,8 @@ void WebBlobRegistryImpl::registerBlobURL( data_item.blobURL, static_cast<uint64>(data_item.offset), static_cast<uint64>(data_item.length)); + child_thread_->Send(new BlobHostMsg_AppendBlobDataItem(url, item)); } - child_thread_->Send(new BlobHostMsg_AppendBlobDataItem(url, item)); break; default: NOTREACHED(); |