Merge "Fix use of JNI calls inside GetStringCritical/ReleaseStringCritical sections."
am: df3d68c9b2
Change-Id: I56e293d16dee7503f717f3cca4902720307a2024
This commit is contained in:
@@ -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();
|
reinterpret_cast<const char16_t *>(interfaceName),
|
||||||
|
env->GetStringLength(interfaceNameObj));
|
||||||
status_t err = parcel->writeInterfaceToken(
|
|
||||||
String16(
|
|
||||||
reinterpret_cast<const char16_t *>(interfaceName),
|
|
||||||
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();
|
reinterpret_cast<const char16_t *>(interfaceName),
|
||||||
|
env->GetStringLength(interfaceNameObj));
|
||||||
bool valid = parcel->enforceInterface(
|
|
||||||
String16(
|
|
||||||
reinterpret_cast<const char16_t *>(interfaceName),
|
|
||||||
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,
|
||||||
|
|||||||
Reference in New Issue
Block a user