Move the exception test

release-v2.2.0
ylecollen 2017-01-05 10:16:14 +01:00
parent 90c55806c0
commit eec8a50caf
1 changed files with 14 additions and 10 deletions

View File

@ -62,22 +62,26 @@ bool setRandomInBuffer(JNIEnv *env, uint8_t **aBuffer2Ptr, size_t aRandomSize)
newObj = env->NewObject(cls, constructor); newObj = env->NewObject(cls, constructor);
jbyteArray tempByteArray = env->NewByteArray(bufferLen); jbyteArray tempByteArray = env->NewByteArray(bufferLen);
if (newObj && tempByteArray && !env->ExceptionOccurred()) if (newObj && tempByteArray)
{ {
env->CallVoidMethod(newObj, nextByteMethod, tempByteArray); env->CallVoidMethod(newObj, nextByteMethod, tempByteArray);
jbyte* buffer = env->GetByteArrayElements(tempByteArray, NULL);
if (buffer) if (!env->ExceptionOccurred())
{ {
memcpy(*aBuffer2Ptr, buffer, bufferLen); jbyte* buffer = env->GetByteArrayElements(tempByteArray, NULL);
retCode = true;
// clear tempByteArray to hide sensitive data. if (buffer)
memset(buffer, 0, bufferLen); {
env->SetByteArrayRegion(tempByteArray, 0, bufferLen, buffer); memcpy(*aBuffer2Ptr, buffer, bufferLen);
retCode = true;
// ensure that the buffer is released // clear tempByteArray to hide sensitive data.
env->ReleaseByteArrayElements(tempByteArray, buffer, JNI_ABORT); memset(buffer, 0, bufferLen);
env->SetByteArrayRegion(tempByteArray, 0, bufferLen, buffer);
// ensure that the buffer is released
env->ReleaseByteArrayElements(tempByteArray, buffer, JNI_ABORT);
}
} }
} }