diff --git a/core/jni/android_os_HwParcel.cpp b/core/jni/android_os_HwParcel.cpp index 151dbfce7af32..a88f8919ed086 100644 --- a/core/jni/android_os_HwParcel.cpp +++ b/core/jni/android_os_HwParcel.cpp @@ -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(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); } }