diff options
author | Steve Kondik <steve@cyngn.com> | 2016-03-11 03:47:09 -0800 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2016-03-11 16:58:39 -0800 |
commit | 0e1dbed9194839a90755670d8fdf9046a75b85f7 (patch) | |
tree | 010372762ddc617295da2862f7d61813da9e3586 /core/jni | |
parent | 564f10b8f05ddf4d9ea2c0e64f1b113fe6dad4b8 (diff) | |
parent | e342181a4a8d8177b3b87ffe141777565fe98f15 (diff) | |
download | frameworks_base-0e1dbed9194839a90755670d8fdf9046a75b85f7.zip frameworks_base-0e1dbed9194839a90755670d8fdf9046a75b85f7.tar.gz frameworks_base-0e1dbed9194839a90755670d8fdf9046a75b85f7.tar.bz2 |
Merge tag 'android-6.0.1_r22' of https://android.googlesource.com/platform/frameworks/base into cm-13.0
Android 6.0.1 release 22
Change-Id: I0d31899b234156a91accb61e0a7fb3d8d16d5062
Diffstat (limited to 'core/jni')
-rwxr-xr-x | core/jni/android/graphics/Bitmap.cpp | 1 | ||||
-rw-r--r-- | core/jni/com_android_internal_os_Zygote.cpp | 26 |
2 files changed, 26 insertions, 1 deletions
diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp index 6cbdeaa..f5fe086 100755 --- a/core/jni/android/graphics/Bitmap.cpp +++ b/core/jni/android/graphics/Bitmap.cpp @@ -1006,6 +1006,7 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) { // is disposed. int dupFd = dup(blob.fd()); if (dupFd < 0) { + ALOGE("Error allocating dup fd. Error:%d", errno); blob.release(); SkSafeUnref(ctable); doThrowRE(env, "Could not allocate dup blob fd."); diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp index aef70be..ac64edf 100644 --- a/core/jni/com_android_internal_os_Zygote.cpp +++ b/core/jni/com_android_internal_os_Zygote.cpp @@ -611,10 +611,34 @@ static jint com_android_internal_os_Zygote_nativeForkAndSpecialize( jint debug_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring se_name, jintArray fdsToClose, jstring instructionSet, jstring appDataDir) { - // Grant CAP_WAKE_ALARM to the Bluetooth process. jlong capabilities = 0; if (uid == AID_BLUETOOTH) { + // Grant CAP_WAKE_ALARM and CAP_BLOCK_SUSPEND to the Bluetooth process. capabilities |= (1LL << CAP_WAKE_ALARM); + capabilities |= (1LL << CAP_BLOCK_SUSPEND); + + // Add the Bluetooth process to the system group. + jsize length = env->GetArrayLength(reinterpret_cast<jarray>(gids)); + jintArray gids_with_system = env->NewIntArray(length + 1); + if (!gids_with_system) { + ALOGE("could not allocate java array for gids"); + RuntimeAbort(env); + } + + jint *gids_elements = env->GetIntArrayElements(gids, NULL); + jint *gids_with_system_elements = env->GetIntArrayElements(gids_with_system, NULL); + + if (!gids_elements || !gids_with_system_elements) { + ALOGE("could not allocate arrays for gids"); + RuntimeAbort(env); + } + + gids_with_system_elements[0] = AID_SYSTEM; + memcpy(&gids_with_system_elements[1], &gids_elements[0], length * sizeof(jint)); + + env->ReleaseIntArrayElements(gids, gids_elements, JNI_ABORT); + env->ReleaseIntArrayElements(gids_with_system, gids_with_system_elements, 0); + gids = gids_with_system; } return ForkAndSpecializeCommon(env, uid, gid, gids, debug_flags, |