@@ -109,8 +109,8 @@ func (s *SencBox) ReadButNotParsed() bool {
109109
110110// DecodeSenc - box-specific decode
111111func DecodeSenc (hdr BoxHeader , startPos uint64 , r io.Reader ) (Box , error ) {
112- if hdr .Size < 16 {
113- return nil , fmt .Errorf ("box size %d less than min size 16 " , hdr .Size )
112+ if hdr .payloadLen () < 8 {
113+ return nil , fmt .Errorf ("payload size %d less than min size 8 " , hdr .payloadLen () )
114114 }
115115 data , err := readBoxBody (r , hdr )
116116 if err != nil {
@@ -125,10 +125,6 @@ func DecodeSenc(hdr BoxHeader, startPos uint64, r io.Reader) (Box, error) {
125125 }
126126 sampleCount := binary .BigEndian .Uint32 (data [4 :8 ])
127127
128- if len (data ) < 8 {
129- return nil , fmt .Errorf ("senc: box size %d less than 16" , hdr .Size )
130- }
131-
132128 senc := SencBox {
133129 Version : version ,
134130 rawData : data [8 :], // After the first 8 bytes of box content
@@ -140,8 +136,8 @@ func DecodeSenc(hdr BoxHeader, startPos uint64, r io.Reader) (Box, error) {
140136 }
141137
142138 if flags & UseSubSampleEncryption != 0 && (len (senc .rawData ) < 2 * int (sampleCount )) {
143- return nil , fmt .Errorf ("box size %d too small for %d samples and subSampleEncryption" ,
144- hdr .Size , sampleCount )
139+ return nil , fmt .Errorf ("payload size %d too small for %d samples and subSampleEncryption" ,
140+ hdr .payloadLen () , sampleCount )
145141 }
146142
147143 if senc .SampleCount == 0 || len (senc .rawData ) == 0 {
@@ -153,9 +149,10 @@ func DecodeSenc(hdr BoxHeader, startPos uint64, r io.Reader) (Box, error) {
153149
154150// DecodeSencSR - box-specific decode
155151func DecodeSencSR (hdr BoxHeader , startPos uint64 , sr bits.SliceReader ) (Box , error ) {
156- if hdr .Size < 16 {
157- return nil , fmt .Errorf ("box size %d less than min size 16 " , hdr .Size )
152+ if hdr .payloadLen () < 8 {
153+ return nil , fmt .Errorf ("payload size %d less than min size 8 " , hdr .payloadLen () )
158154 }
155+ payloadLen := uint64 (hdr .payloadLen ())
159156
160157 versionAndFlags := sr .ReadUint32 ()
161158 version := byte (versionAndFlags >> 24 )
@@ -165,14 +162,14 @@ func DecodeSencSR(hdr BoxHeader, startPos uint64, sr bits.SliceReader) (Box, err
165162 flags := versionAndFlags & flagsMask
166163 sampleCount := sr .ReadUint32 ()
167164
168- if flags & UseSubSampleEncryption != 0 && ((hdr . Size - 16 ) < 2 * uint64 (sampleCount )) {
169- return nil , fmt .Errorf ("box size %d too small for %d samples and subSampleEncryption" ,
170- hdr .Size , sampleCount )
165+ if flags & UseSubSampleEncryption != 0 && ((payloadLen - 8 ) < 2 * uint64 (sampleCount )) {
166+ return nil , fmt .Errorf ("payload size %d too small for %d samples and subSampleEncryption" ,
167+ hdr .payloadLen () , sampleCount )
171168 }
172169
173170 senc := SencBox {
174171 Version : version ,
175- rawData : sr .ReadBytes (hdr . payloadLen () - 8 ), // After the first 8 bytes of box content
172+ rawData : sr .ReadBytes (int ( payloadLen - 8 ) ), // After the first 8 bytes of box content
176173 Flags : flags ,
177174 StartPos : startPos ,
178175 SampleCount : sampleCount ,
0 commit comments