From 31f8fe23c5de0cf226f5061552c02a5bdc767b6a Mon Sep 17 00:00:00 2001 From: pedroGitt Date: Thu, 27 Oct 2016 11:44:33 +0200 Subject: Fix random issue: increase random seed precision to micro sec - previously the random seed was seconds based, and it could originate identical identity keys for different OlmAccount --- java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'java/android/OlmLibSdk/olm-sdk/src/main/jni') 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 5910c42..239fc68 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 @@ -19,6 +19,7 @@ #include "olm_jni_helper.h" #include "olm/olm.h" +#include using namespace AndroidOlmSdk; @@ -31,6 +32,8 @@ using namespace AndroidOlmSdk; bool setRandomInBuffer(uint8_t **aBuffer2Ptr, size_t aRandomSize) { bool retCode = false; + struct timeval timeValue; + if(NULL == aBuffer2Ptr) { LOGE("## setRandomInBuffer(): failure - aBuffer=NULL"); @@ -47,10 +50,14 @@ bool setRandomInBuffer(uint8_t **aBuffer2Ptr, size_t aRandomSize) { LOGD("## setRandomInBuffer(): randomSize=%lu",static_cast(aRandomSize)); - srand(time(NULL)); // init seed + gettimeofday(&timeValue, NULL); + srand(timeValue.tv_usec); // init seed + for(size_t i=0;i