File tree Expand file tree Collapse file tree 2 files changed +9
-0
lines changed
Expand file tree Collapse file tree 2 files changed +9
-0
lines changed Original file line number Diff line number Diff line change 2121 errRFC8285TwoByteHeaderSize = errors .New ("header extension payload must be 255bytes or less for RFC 5285 two byte extensions" )
2222
2323 errRFC3550HeaderIDRange = errors .New ("header extension id must be 0 for non-RFC 5285 extensions" )
24+
25+ errInvalidRTPPadding = errors .New ("invalid RTP padding" )
2426)
Original file line number Diff line number Diff line change @@ -215,6 +215,9 @@ func (p *Packet) Unmarshal(buf []byte) error {
215215
216216 end := len (buf )
217217 if p .Header .Padding {
218+ if end <= n {
219+ return errTooSmall
220+ }
218221 p .PaddingSize = buf [end - 1 ]
219222 end -= int (p .PaddingSize )
220223 }
@@ -475,6 +478,10 @@ func (p Packet) Marshal() (buf []byte, err error) {
475478
476479// MarshalTo serializes the packet and writes to the buffer.
477480func (p * Packet ) MarshalTo (buf []byte ) (n int , err error ) {
481+ if p .Header .Padding && p .PaddingSize == 0 {
482+ return 0 , errInvalidRTPPadding
483+ }
484+
478485 n , err = p .Header .MarshalTo (buf )
479486 if err != nil {
480487 return 0 , err
You can’t perform that action at this time.
0 commit comments