From 8a2b24e57ae00ddc6d9221127f9855758c7d722b Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 7 May 2017 19:01:33 -0700 Subject: [PATCH] Fix frame queue corruption when trying to skip a frame with no buffers --- src/RtpFecQueue.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/RtpFecQueue.c b/src/RtpFecQueue.c index 65767ca..e9e8a15 100644 --- a/src/RtpFecQueue.c +++ b/src/RtpFecQueue.c @@ -211,14 +211,18 @@ int RtpfAddPacket(PRTP_FEC_QUEUE queue, PRTP_PACKET packet, PRTPFEC_QUEUE_ENTRY if (queue->queueTail == NULL) { queue->queueHead = queue->bufferHead; queue->queueTail = queue->bufferTail; - } else { + } else if (queue->bufferHead != NULL) { queue->queueTail->next = queue->bufferHead; queue->queueTail = queue->bufferTail; + } else { + LC_ASSERT(queue->bufferTail == NULL); + LC_ASSERT(queue->bufferSize == 0); } + queue->bufferHead = NULL; queue->bufferTail = NULL; - queue->queueSize = queue->bufferSize; + queue->queueSize += queue->bufferSize; queue->nextRtpSequenceNumber = queue->bufferHighestSequenceNumber; int fecIndex = (nvPacket->fecInfo & 0xFF000) >> 12;