vm: reduce maximum stckitem size

To prevent possible DoS. Port the https://github.com/neo-project/neo-vm/pull/514,
close #3170.

Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
This commit is contained in:
Anna Shaleva 2023-11-02 11:44:05 +03:00
parent dbd647e3a6
commit b0cdae4666
2 changed files with 2 additions and 2 deletions

View file

@ -21,7 +21,7 @@ const (
// MaxBigIntegerSizeBits is the maximum size of a BigInt item in bits. // MaxBigIntegerSizeBits is the maximum size of a BigInt item in bits.
MaxBigIntegerSizeBits = 32 * 8 MaxBigIntegerSizeBits = 32 * 8
// MaxSize is the maximum item size allowed in the VM. // MaxSize is the maximum item size allowed in the VM.
MaxSize = 1024 * 1024 MaxSize = math.MaxUint16 * 2
// MaxComparableNumOfItems is the maximum number of items that can be compared for structs. // MaxComparableNumOfItems is the maximum number of items that can be compared for structs.
MaxComparableNumOfItems = MaxDeserialized MaxComparableNumOfItems = MaxDeserialized
// MaxClonableNumOfItems is the maximum number of items that can be cloned in structs. // MaxClonableNumOfItems is the maximum number of items that can be cloned in structs.

View file

@ -383,7 +383,7 @@ func TestToJSONWithTypesBadCases(t *testing.T) {
// until the necessary branch is covered #ididthemath. // until the necessary branch is covered #ididthemath.
arr := NewArray([]Item{ arr := NewArray([]Item{
NewByteArray(bigBuf[:MaxSize/4*3-70]), NewByteArray(bigBuf[:MaxSize/4*3-70]),
NewBigInteger(big.NewInt(1234)), NewBigInteger(big.NewInt(123456)),
}) })
_, err := ToJSONWithTypes(arr) _, err := ToJSONWithTypes(arr)
require.ErrorIs(t, err, errTooBigSize) require.ErrorIs(t, err, errTooBigSize)