diff --git a/padding/iso9797_m3.go b/padding/iso9797_m3.go index 565f749..4f56153 100644 --- a/padding/iso9797_m3.go +++ b/padding/iso9797_m3.go @@ -28,13 +28,13 @@ func (pad iso9797M3Padding) Pad(src []byte) []byte { overhead = 0 } - var head, tail []byte - total := srcLen + overhead + pad.BlockSize() - - if total <= 0 { + if srcLen > (int(^uint(0) >> 1) - overhead - pad.BlockSize()) { panic("padding: total length overflow") } + var head, tail []byte + total := srcLen + overhead + pad.BlockSize() + if cap(src) >= total { head = src[:total] } else {