summaryrefslogtreecommitdiffstats
path: root/content/common
diff options
context:
space:
mode:
authorericu@chromium.org <ericu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-24 02:02:15 +0000
committerericu@chromium.org <ericu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-24 02:02:15 +0000
commit1978b883c3f0bc39ae116c2359a8ea264249b4a9 (patch)
tree99622b904ffc302c585c3adbd4acf7b03d885b80 /content/common
parent374372ab9713c90a71a03ff4705ad8e46faf93c3 (diff)
downloadchromium_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.cc18
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();