From 87f3440f78166c450cd14150a254dcccabd1948e Mon Sep 17 00:00:00 2001 From: Kamal Bramwell <kamal@elixxir.io> Date: Tue, 25 Oct 2022 13:24:30 -0400 Subject: [PATCH] Check for empty data before deserializing --- .../io/elixxir/xxclient/models/BindingsModel.kt | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/xxclient/src/main/java/io/elixxir/xxclient/models/BindingsModel.kt b/xxclient/src/main/java/io/elixxir/xxclient/models/BindingsModel.kt index 8b3c62f..509e505 100644 --- a/xxclient/src/main/java/io/elixxir/xxclient/models/BindingsModel.kt +++ b/xxclient/src/main/java/io/elixxir/xxclient/models/BindingsModel.kt @@ -1,7 +1,9 @@ package io.elixxir.xxclient.models +import android.util.Log import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import io.elixxir.xxclient.utils.toBase64String interface BindingsModel { @@ -16,13 +18,20 @@ interface BindingsModel { } inline fun <reified T> decode(data: ByteArray): T { - val typeToken = object : TypeToken<T>() {}.type - return Gson().fromJson(data.decodeToString(), typeToken) + return if (data.isNotEmpty()) { + val typeToken = object : TypeToken<T>() {}.type + Gson().fromJson(data.decodeToString(), typeToken) + } else { + Log.d("Decode", "Failed to decode data: ${data.decodeToString()}") + throw InvalidDataException() + } } inline fun <reified T> decodeArray(data: ByteArray): List<T> { - val typeToken = object : TypeToken<Array<T>>() {}.type - return Gson().fromJson<Array<T>>(data.decodeToString(), typeToken).toList() + return if (data.isNotEmpty()) { + val typeToken = object : TypeToken<Array<T>>() {}.type + Gson().fromJson<Array<T>>(data.decodeToString(), typeToken).toList() + } else listOf() } } } \ No newline at end of file -- GitLab