diff --git a/CHANGELOG.md b/CHANGELOG.md index 92ff038..d3a66ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Unreleased +* Added a check for int overflows in `ReadByteArray` * Changed valueToInt, valueToUint, valueToFload function in abiencode.go for compatible with double quoted string to number. * Changed `NewAssetFromString` validation to allow parsing of empty assets * Added `action_trace_v1` field diff --git a/decoder.go b/decoder.go index 8c49a2a..7b2afb3 100644 --- a/decoder.go +++ b/decoder.go @@ -631,6 +631,10 @@ func (d *Decoder) ReadByteArray() (out []byte, err error) { return nil, err } + if l > math.MaxInt || d.pos > math.MaxInt-int(l) { + return nil, errors.New("byte array: varlen is overflowing int") + } + if len(d.data) < d.pos+int(l) { return nil, fmt.Errorf("byte array: varlen=%d, missing %d bytes", l, d.pos+int(l)-len(d.data)) }