From dee4cb07a3652457e18a0bf4be57d2cedeca7359 Mon Sep 17 00:00:00 2001 From: Jack Palevich Date: Mon, 13 Dec 2010 11:13:32 -0800 Subject: [PATCH] Avoid SIGSEGV in Bitmap_writeToParcel. SkBitmap::getPixels() can return NULL. The rest of the JNI Bitmap code treats this NULL as if the SkBitmap has transparent black pixels. Bitmap_writeToParcel now does the same. Change-Id: I5e70b42b3d22a8aea898ce342e590000325bd0f9 --- core/jni/android/graphics/Bitmap.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp index 8956e39af99f1..29c6ba23845bc 100644 --- a/core/jni/android/graphics/Bitmap.cpp +++ b/core/jni/android/graphics/Bitmap.cpp @@ -429,7 +429,15 @@ static jboolean Bitmap_writeToParcel(JNIEnv* env, jobject, size_t size = bitmap->getSize(); bitmap->lockPixels(); - memcpy(p->writeInplace(size), bitmap->getPixels(), size); + void* pDst = p->writeInplace(size); + + const void* pSrc = bitmap->getPixels(); + + if (pSrc == NULL) { + memset(pDst, 0, size); + } else { + memcpy(pDst, pSrc, size); + } bitmap->unlockPixels(); return true; }