From ca7a6e7bbe7f42ff6bfc074e2f56963775d07cbd Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Tue, 8 Jun 2021 20:03:49 -0500 Subject: [PATCH] Validate block size before writing data --- src/RtpAudioQueue.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/RtpAudioQueue.c b/src/RtpAudioQueue.c index 67e3a1b..b465842 100644 --- a/src/RtpAudioQueue.c +++ b/src/RtpAudioQueue.c @@ -191,7 +191,14 @@ static PRTPA_FEC_BLOCK getFecBlockForRtpPacket(PRTP_AUDIO_QUEUE queue, PRTP_PACK LC_ASSERT(existingBlock->fecHeader.payloadType == fecBlockPayloadType); LC_ASSERT(existingBlock->fecHeader.baseTimestamp == fecBlockBaseTs); LC_ASSERT(existingBlock->fecHeader.ssrc == fecBlockSsrc); - LC_ASSERT(existingBlock->blockSize == blockSize); + + // The block size must match in order to safely copy shards into it + if (existingBlock->blockSize != blockSize) { + LC_ASSERT(existingBlock->blockSize == blockSize); + Limelog("Audio block size mismatch (got %u, expected %u)\n", + blockSize, existingBlock->blockSize); + return NULL; + } // If the block is completed, don't return it return existingBlock->fullyReassembled ? NULL : existingBlock;