Check on copy. (#2525)

Should not happen, but just being defensive.
This commit is contained in:
Raja Subramanian
2024-02-29 10:25:52 +05:30
committed by GitHub
parent a435368278
commit af79224e30
+8 -3
View File
@@ -89,9 +89,9 @@ var (
ErrOutOfOrderSequenceNumberCacheMiss = errors.New("out-of-order sequence number not found in cache")
ErrPaddingOnlyPacket = errors.New("padding only packet that need not be forwarded")
ErrDuplicatePacket = errors.New("duplicate packet")
ErrSequenceNumberOffsetNotFound = errors.New("sequence number offset not found")
ErrPaddingNotOnFrameBoundary = errors.New("padding cannot send on non-frame boundary")
ErrDownTrackAlreadyBound = errors.New("already bound")
ErrPayloadOverflow = errors.New("payload overflow")
)
var (
@@ -694,8 +694,13 @@ func (d *DownTrack) WriteRTP(extPkt *buffer.ExtPacket, layer int32) error {
PacketFactory.Put(poolEntity)
return err
}
copy(payload[outgoingHeaderSize:], extPkt.Packet.Payload[incomingHeaderSize:])
payload = payload[:outgoingHeaderSize+len(extPkt.Packet.Payload)-incomingHeaderSize]
n := copy(payload[outgoingHeaderSize:], extPkt.Packet.Payload[incomingHeaderSize:])
if n != len(extPkt.Packet.Payload[incomingHeaderSize:]) {
d.params.Logger.Errorw("payload overflow", nil, "want", len(extPkt.Packet.Payload[incomingHeaderSize:]), "have", n)
PacketFactory.Put(poolEntity)
return ErrPayloadOverflow
}
payload = payload[:outgoingHeaderSize+n]
hdr, err := d.getTranslatedRTPHeader(extPkt, &tp)
if err != nil {