tape: Respect limits when dynamically decoding

This commit is contained in:
Sasha Koshka 2025-08-28 12:31:49 -04:00
parent 80161b37f7
commit e28ab4dc6b

View File

@ -145,7 +145,11 @@ func decodeAnyOrError(decoder *Decoder, destination reflect.Value, tag Tag) (n i
n += nn; if err != nil { return n, err } n += nn; if err != nil { return n, err }
case SBA: case SBA:
// SBA: <data: U8>* // SBA: <data: U8>*
buffer := make([]byte, tag.CN()) length := tag.CN()
if length > MaxStructureLength {
return 0, ErrTooLong
}
buffer := make([]byte, length)
nn, err := decoder.Read(buffer) nn, err := decoder.Read(buffer)
n += nn; if err != nil { return n, err } n += nn; if err != nil { return n, err }
setByteArray(destination, buffer) setByteArray(destination, buffer)