From eec8a50cafc75c025a98133520e8d8e9cf97e115 Mon Sep 17 00:00:00 2001
From: ylecollen <ylecollen@amdocs.com>
Date: Thu, 5 Jan 2017 10:16:14 +0100
Subject: [PATCH] Move the exception test

---
 .../olm-sdk/src/main/jni/olm_jni_helper.cpp   | 24 +++++++++++--------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp b/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp
index e8661c7..7146f4e 100644
--- a/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp
+++ b/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp
@@ -62,22 +62,26 @@ bool setRandomInBuffer(JNIEnv *env, uint8_t **aBuffer2Ptr, size_t aRandomSize)
                 newObj = env->NewObject(cls, constructor);
                 jbyteArray tempByteArray = env->NewByteArray(bufferLen);
 
-                if (newObj && tempByteArray && !env->ExceptionOccurred())
+                if (newObj && tempByteArray)
                 {
                     env->CallVoidMethod(newObj, nextByteMethod, tempByteArray);
-                    jbyte* buffer = env->GetByteArrayElements(tempByteArray, NULL);
 
-                    if (buffer)
+                    if (!env->ExceptionOccurred())
                     {
-                        memcpy(*aBuffer2Ptr, buffer, bufferLen);
-                        retCode = true;
+                        jbyte* buffer = env->GetByteArrayElements(tempByteArray, NULL);
 
-                        // clear tempByteArray to hide sensitive data.
-                        memset(buffer, 0, bufferLen);
-                        env->SetByteArrayRegion(tempByteArray, 0, bufferLen, buffer);
+                        if (buffer)
+                        {
+                            memcpy(*aBuffer2Ptr, buffer, bufferLen);
+                            retCode = true;
 
-                        // ensure that the buffer is released
-                        env->ReleaseByteArrayElements(tempByteArray, buffer, JNI_ABORT);
+                            // clear tempByteArray to hide sensitive data.
+                            memset(buffer, 0, bufferLen);
+                            env->SetByteArrayRegion(tempByteArray, 0, bufferLen, buffer);
+
+                            // ensure that the buffer is released
+                            env->ReleaseByteArrayElements(tempByteArray, buffer, JNI_ABORT);
+                        }
                     }
                 }
 
-- 
GitLab