diff --git a/livekit-android-sdk/src/main/java/io/livekit/android/room/RTCEngine.kt b/livekit-android-sdk/src/main/java/io/livekit/android/room/RTCEngine.kt index e4e140f1..0723eefa 100644 --- a/livekit-android-sdk/src/main/java/io/livekit/android/room/RTCEngine.kt +++ b/livekit-android-sdk/src/main/java/io/livekit/android/room/RTCEngine.kt @@ -1303,7 +1303,12 @@ internal constructor( if (buffer == null) { return } - var dp = LivekitModels.DataPacket.parseFrom(ByteString.copyFrom(buffer.data)) + var dp = try { + LivekitModels.DataPacket.parseFrom(ByteString.copyFrom(buffer.data)) + } catch (e: com.google.protobuf.InvalidProtocolBufferException) { + LKLog.w(e) { "Failed to parse DataPacket, discarding malformed message." } + return + } if (dp.sequence > 0 && dp.participantSid.isNotEmpty()) { synchronized(reliableStateLock) { @@ -1332,7 +1337,12 @@ internal constructor( LKLog.i { "Failed to decrypt data packet." } return } - val payload = LivekitModels.EncryptedPacketPayload.parseFrom(decryptedData) + val payload = try { + LivekitModels.EncryptedPacketPayload.parseFrom(decryptedData) + } catch (e: com.google.protobuf.InvalidProtocolBufferException) { + LKLog.w(e) { "Failed to parse decrypted EncryptedPacketPayload, discarding message." } + return + } dp = with(dp.toBuilder()) { setFromEncryptedPayload(payload) diff --git a/livekit-android-sdk/src/main/java/io/livekit/android/room/SignalClient.kt b/livekit-android-sdk/src/main/java/io/livekit/android/room/SignalClient.kt index 24027044..0c1cc5c9 100644 --- a/livekit-android-sdk/src/main/java/io/livekit/android/room/SignalClient.kt +++ b/livekit-android-sdk/src/main/java/io/livekit/android/room/SignalClient.kt @@ -385,9 +385,14 @@ constructor( return } val byteArray = message.toByteArray() - val signalResponseBuilder = LivekitRtc.SignalResponse.newBuilder() - .mergeFrom(byteArray) - val response = signalResponseBuilder.build() + val response = try { + LivekitRtc.SignalResponse.newBuilder() + .mergeFrom(byteArray) + .build() + } catch (e: com.google.protobuf.InvalidProtocolBufferException) { + LKLog.w(e) { "Failed to parse SignalResponse, discarding malformed message." } + return + } handleSignalResponse(transport, response) }