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

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

Merge "Fix use of JNI calls inside GetStringCritical/ReleaseStringCritical sections."

parents bccf9331 9f026869
Loading
Loading
Loading
Loading
+15 −14
Original line number Original line Diff line number Diff line
@@ -267,17 +267,17 @@ static void JHwParcel_native_writeInterfaceToken(


    const jchar *interfaceName = env->GetStringCritical(interfaceNameObj, NULL);
    const jchar *interfaceName = env->GetStringCritical(interfaceNameObj, NULL);
    if (interfaceName) {
    if (interfaceName) {
        hardware::Parcel *parcel =
        String16 nameCopy(
            JHwParcel::GetNativeContext(env, thiz)->getParcel();

        status_t err = parcel->writeInterfaceToken(
                String16(
                reinterpret_cast<const char16_t *>(interfaceName),
                reinterpret_cast<const char16_t *>(interfaceName),
                    env->GetStringLength(interfaceNameObj)));
                env->GetStringLength(interfaceNameObj));


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


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

        status_t err = parcel->writeInterfaceToken(nameCopy);
        signalExceptionForError(env, err);
        signalExceptionForError(env, err);
    }
    }
}
}
@@ -294,17 +294,18 @@ static void JHwParcel_native_enforceInterface(


    const jchar *interfaceName = env->GetStringCritical(interfaceNameObj, NULL);
    const jchar *interfaceName = env->GetStringCritical(interfaceNameObj, NULL);
    if (interfaceName) {
    if (interfaceName) {
        hardware::Parcel *parcel =
        String16 interfaceNameCopy(
            JHwParcel::GetNativeContext(env, thiz)->getParcel();

        bool valid = parcel->enforceInterface(
                String16(
                reinterpret_cast<const char16_t *>(interfaceName),
                reinterpret_cast<const char16_t *>(interfaceName),
                    env->GetStringLength(interfaceNameObj)));
                env->GetStringLength(interfaceNameObj));


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


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

        bool valid = parcel->enforceInterface(interfaceNameCopy);

        if (!valid) {
        if (!valid) {
            jniThrowException(
            jniThrowException(
                    env,
                    env,