Fix crash (KotlinNullPointerException) observed on PlayStore

This commit is contained in:
Benoit Marty 2019-08-07 13:35:44 +02:00
parent 3584658c36
commit 9f53406e99

View File

@ -79,8 +79,7 @@ internal class MXOlmDevice @Inject constructor(
// //
// The first level keys are timeline ids. // The first level keys are timeline ids.
// The second level keys are strings of form "<senderKey>|<session_id>|<message_index>" // The second level keys are strings of form "<senderKey>|<session_id>|<message_index>"
// Values are true. private val inboundGroupSessionMessageIndexes: MutableMap<String, MutableSet<String>> = HashMap()
private val inboundGroupSessionMessageIndexes: MutableMap<String, MutableMap<String, Boolean>> = HashMap()


init { init {
// Retrieve the account from the store // Retrieve the account from the store
@ -662,19 +661,17 @@ internal class MXOlmDevice @Inject constructor(
} }


if (null != timeline) { if (null != timeline) {
if (!inboundGroupSessionMessageIndexes.containsKey(timeline)) { val timelineSet = inboundGroupSessionMessageIndexes.getOrPut(timeline) { mutableSetOf() }
inboundGroupSessionMessageIndexes[timeline] = HashMap()
}


val messageIndexKey = senderKey + "|" + sessionId + "|" + decryptResult.mIndex val messageIndexKey = senderKey + "|" + sessionId + "|" + decryptResult.mIndex


if (inboundGroupSessionMessageIndexes[timeline]?.get(messageIndexKey) != null) { if (timelineSet.contains(messageIndexKey)) {
val reason = String.format(MXCryptoError.DUPLICATE_MESSAGE_INDEX_REASON, decryptResult.mIndex) val reason = String.format(MXCryptoError.DUPLICATE_MESSAGE_INDEX_REASON, decryptResult.mIndex)
Timber.e("## decryptGroupMessage() : $reason") Timber.e("## decryptGroupMessage() : $reason")
throw MXCryptoError.Base(MXCryptoError.ErrorType.DUPLICATED_MESSAGE_INDEX, reason) throw MXCryptoError.Base(MXCryptoError.ErrorType.DUPLICATED_MESSAGE_INDEX, reason)
} }


inboundGroupSessionMessageIndexes[timeline]!!.put(messageIndexKey, true) timelineSet.add(messageIndexKey)
} }


store.storeInboundGroupSessions(listOf(session)) store.storeInboundGroupSessions(listOf(session))