Android-x86
Fork
Donation

  • R/O
  • HTTP
  • SSH
  • HTTPS

frameworks-base: Commit

frameworks/base


Commit MetaInfo

Revisión97d43a228f365005b46f3419ce94d13a83334007 (tree)
Tiempo2020-04-14 23:46:55
AutorMauro Rossi <issor.oruam@gmai...>
CommiterChih-Wei Huang

Log Message

android_view_ThreadedRenderer: prevent Null Pointer Exception in createBitmap

To avoid Playstore crashes with nouveau and Hardware Bitmap,
a check is added to bitmap returned by Bitmap::createFrom(buffer)
inspired by similar behavior in Bitmap.cpp Bitmap_createHardwareBitmap()

Fixes the following crash:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'Android-x86/android_x86/x86:8.1.0/OPM8.181005.003/uten01131829:userdebug/test-keys'
Revision: '0'
ABI: 'x86'
pid: 4644, tid: 4644, name: android.vending >>> com.android.vending <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xc
Cause: null pointer dereference

eax 89195380 ebx b1d36290 ecx 00000000 edx ae783074
esi 00000000 edi ae7a9380
xcs 00000073 xds 0000007b xes 0000007b xfs 0000003b xss 0000007b
eip b1c4f7c8 ebp bff902c8 esp bff9028c flags 00010246

backtrace:

#00 pc 000fd7c8 /system/lib/libandroid_runtime.so (android::bitmap::createBitmap(_JNIEnv*, android::Bitmap*, int, _jbyteArray*, _jobject*, int)+104)
#01 pc 000d08ca /system/lib/libandroid_runtime.so (android::android_view_ThreadedRenderer_createHardwareBitmapFromRenderNode(_JNIEnv*, _jobject*, long long, int, int)+1002)

Cambiar Resumen

Diferencia incremental

--- a/core/jni/android_view_ThreadedRenderer.cpp
+++ b/core/jni/android_view_ThreadedRenderer.cpp
@@ -992,6 +992,10 @@ static jobject android_view_ThreadedRenderer_createHardwareBitmapFromRenderNode(
992992 cs = SkColorSpace::MakeSRGB();
993993 }
994994 sk_sp<Bitmap> bitmap = Bitmap::createFrom(buffer, ct, cs);
995+ if (!bitmap.get()) {
996+ ALOGW("Failed to create hardware bitmap from graphic buffer");
997+ return nullptr;
998+ }
995999 return bitmap::createBitmap(env, bitmap.release(),
9961000 android::bitmap::kBitmapCreateFlag_Premultiplied);
9971001 }
Show on old repository browser