From c459a2e2fa0657cb78e2ac86fa7516f94e0bcbea46e302c4c033acacab0c5557 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Tue, 11 Feb 2025 10:13:33 +0300 Subject: [PATCH] Too deep error test --- go/blob_test.go | 9 +++++++++ go/int_test.go | 9 +++++++++ go/list_test.go | 8 ++++++++ go/map_test.go | 13 +++++++++++++ 4 files changed, 39 insertions(+) diff --git a/go/blob_test.go b/go/blob_test.go index a97d5cb..e18e680 100644 --- a/go/blob_test.go +++ b/go/blob_test.go @@ -302,3 +302,12 @@ func TestBlobWrongTerminatorTag(t *testing.T) { t.Fatal(err) } } + +func TestBlobTooDeep(t *testing.T) { + bin := []byte{byte(AtomBLOB)} + bin = append(bin, bytes.Repeat([]byte{0x01}, 8)...) + bin = append(bin, bytes.Repeat([]byte{byte(AtomList)}, 1000)...) + if _, err := NewDecoderFromBytes(bin, nil).Decode(); err != ErrBlobBadAtom { + t.Fatal(err) + } +} diff --git a/go/int_test.go b/go/int_test.go index de40f88..34e1337 100644 --- a/go/int_test.go +++ b/go/int_test.go @@ -658,3 +658,12 @@ func TestIntNBigSymmetric(t *testing.T) { t.Fatal(err) } } + +func TestIntTooDeep(t *testing.T) { + if _, err := NewDecoderFromBytes(append( + []byte{byte(AtomPInt)}, + bytes.Repeat([]byte{byte(AtomList)}, 1000)..., + ), nil).Decode(); err != ErrBadInt { + t.Fatal(err) + } +} diff --git a/go/list_test.go b/go/list_test.go index 1dd2464..3adcaea 100644 --- a/go/list_test.go +++ b/go/list_test.go @@ -124,3 +124,11 @@ func TestListIntSymmetric(t *testing.T) { t.Fatal(err) } } + +func TestListTooDeep(t *testing.T) { + if _, err := NewDecoderFromBytes( + bytes.Repeat([]byte{byte(AtomList)}, 1000), + nil).Decode(); err != ErrTooDeep { + t.Fatal(err) + } +} diff --git a/go/map_test.go b/go/map_test.go index 9ae8693..1414ab7 100644 --- a/go/map_test.go +++ b/go/map_test.go @@ -187,3 +187,16 @@ func TestMapIntSymmetric(t *testing.T) { t.Fatal(err) } } + +func TestMapTooDeep(t *testing.T) { + k, err := EncodeBuf("k", nil) + if err != nil { + t.Fatal(err) + } + k = append([]byte{byte(AtomMap)}, k...) + if _, err := NewDecoderFromBytes( + bytes.Repeat(k, 1000), nil, + ).Decode(); err != ErrTooDeep { + t.Fatal(err) + } +} -- 2.48.1