diff options
author | piman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-20 19:26:31 +0000 |
---|---|---|
committer | piman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-20 19:26:31 +0000 |
commit | e4be88bde4a9b1f0d9a56bfc68447e0105657457 (patch) | |
tree | cecf7415d2a5adef8744c94c70ce23f798f26183 /content/renderer/webclipboard_impl.cc | |
parent | 93555babea36692d55f3e8548cd495e339980498 (diff) | |
download | chromium_src-e4be88bde4a9b1f0d9a56bfc68447e0105657457.zip chromium_src-e4be88bde4a9b1f0d9a56bfc68447e0105657457.tar.gz chromium_src-e4be88bde4a9b1f0d9a56bfc68447e0105657457.tar.bz2 |
Workaround bad bitmaps in clibpoard code
- Some bitmaps end up with a NULL getPixels(). Don't try to copy ot of that.
- Only try to copy 32-bit bitmaps
- Protect against overflow in size computation
BUG=369621
Review URL: https://codereview.chromium.org/289573002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@271730 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/webclipboard_impl.cc')
-rw-r--r-- | content/renderer/webclipboard_impl.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/content/renderer/webclipboard_impl.cc b/content/renderer/webclipboard_impl.cc index 317ec7d..663d6f0 100644 --- a/content/renderer/webclipboard_impl.cc +++ b/content/renderer/webclipboard_impl.cc @@ -155,8 +155,15 @@ void WebClipboardImpl::writeImage(const WebImage& image, if (!image.isNull()) { const SkBitmap& bitmap = image.getSkBitmap(); + // WriteBitmapFromPixels expects 32-bit data. + DCHECK_EQ(bitmap.config(), SkBitmap::kARGB_8888_Config); + SkAutoLockPixels locked(bitmap); - scw.WriteBitmapFromPixels(bitmap.getPixels(), image.size()); + void *pixels = bitmap.getPixels(); + // TODO(piman): this should not be NULL, but it is. crbug.com/369621 + if (!pixels) + return; + scw.WriteBitmapFromPixels(pixels, image.size()); } if (!url.isEmpty()) { |