summaryrefslogtreecommitdiffstats
path: root/content/renderer/webclipboard_impl.cc
diff options
context:
space:
mode:
authorpiman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-20 19:26:31 +0000
committerpiman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-20 19:26:31 +0000
commite4be88bde4a9b1f0d9a56bfc68447e0105657457 (patch)
treececf7415d2a5adef8744c94c70ce23f798f26183 /content/renderer/webclipboard_impl.cc
parent93555babea36692d55f3e8548cd495e339980498 (diff)
downloadchromium_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.cc9
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()) {