Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c8a2dbdb authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes I9ad74037,I50b29ef9

* changes:
  Avoid interface name copy in HwParcel
  Avoid allocation on Java Binder fast path
parents 3e6b337b 74c60fba
Loading
Loading
Loading
Loading
+3 −10
Original line number Diff line number Diff line
@@ -292,19 +292,11 @@ static void JHwParcel_native_enforceInterface(
        return;
    }

    const jchar *interfaceName = env->GetStringCritical(interfaceNameObj, NULL);
    const char *interfaceName = env->GetStringUTFChars(interfaceNameObj, NULL);
    if (interfaceName) {
        String8 interfaceNameCopy = String8(String16(
                reinterpret_cast<const char16_t *>(interfaceName),
                env->GetStringLength(interfaceNameObj)));

        env->ReleaseStringCritical(interfaceNameObj, interfaceName);
        interfaceName = NULL;

        hardware::Parcel *parcel =
            JHwParcel::GetNativeContext(env, thiz)->getParcel();

        bool valid = parcel->enforceInterface(interfaceNameCopy.string());
        bool valid = parcel->enforceInterface(interfaceName);

        if (!valid) {
            jniThrowException(
@@ -312,6 +304,7 @@ static void JHwParcel_native_enforceInterface(
                    "java/lang/SecurityException",
                    "HWBinder invocation to an incorrect interface");
        }
        env->ReleaseStringUTFChars(interfaceNameObj, interfaceName);
    }
}

+2 −2
Original line number Diff line number Diff line
@@ -625,8 +625,8 @@ static void android_os_Parcel_enforceInterface(JNIEnv* env, jclass clazz, jlong
            IPCThreadState* threadState = IPCThreadState::self();
            const int32_t oldPolicy = threadState->getStrictModePolicy();
            const bool isValid = parcel->enforceInterface(
                String16(reinterpret_cast<const char16_t*>(str),
                         env->GetStringLength(name)),
                reinterpret_cast<const char16_t*>(str),
                env->GetStringLength(name),
                threadState);
            env->ReleaseStringCritical(name, str);
            if (isValid) {