From 6d44e433f43d59e4a69e8f1c9fdee8643e53460a Mon Sep 17 00:00:00 2001 From: Raja Subramanian Date: Thu, 27 Feb 2025 09:48:13 +0530 Subject: [PATCH] Fix panic with invalid layer. (#3470) * Fix panic with invalid layer. Log an error so that we can understand which track porduces that. * drop bad layer packet without forwarding --- pkg/sfu/receiver.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/sfu/receiver.go b/pkg/sfu/receiver.go index 8c16675bd..ee307a863 100644 --- a/pkg/sfu/receiver.go +++ b/pkg/sfu/receiver.go @@ -770,6 +770,14 @@ func (w *WebRTCReceiver) forwardRTP(layer int32, buff *buffer.Buffer) { // svc packet, take spatial layer info from packet spatialLayer = pkt.Spatial } + if int(spatialLayer) >= len(spatialTrackers) { + w.logger.Errorw( + "unexpected spatial layer", nil, + "spatialLayer", spatialLayer, + "pktSpatialLayer", pkt.Spatial, + ) + continue + } writeCount := w.downTrackSpreader.Broadcast(func(dt TrackSender) { _ = dt.WriteRTP(pkt, spatialLayer)