diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index d1d27e06..55290e07 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go_versions: [ '1.19', '1.20', '1.21' ] + go_versions: [ '1.20', '1.21', '1.22' ] fail-fast: false steps: - uses: actions/checkout@v4 diff --git a/checksum/example_test.go b/checksum/example_test.go index 66c25415..5a18a484 100644 --- a/checksum/example_test.go +++ b/checksum/example_test.go @@ -28,6 +28,7 @@ func ExampleChecksum_marshalling() { cs Checksum ) + //nolint:staticcheck rand.Read(csRaw[:]) cs.SetSHA256(csRaw) diff --git a/checksum/test/generate.go b/checksum/test/generate.go index 72eeadbf..7a6f9067 100644 --- a/checksum/test/generate.go +++ b/checksum/test/generate.go @@ -10,7 +10,7 @@ import ( // Checksum returns random checksum.Checksum. func Checksum() checksum.Checksum { var cs [sha256.Size]byte - + //nolint:staticcheck rand.Read(cs[:]) var x checksum.Checksum diff --git a/client/object_replicate_test.go b/client/object_replicate_test.go index bc0a0424..44340808 100644 --- a/client/object_replicate_test.go +++ b/client/object_replicate_test.go @@ -9,7 +9,6 @@ import ( "sync" "testing" - "github.com/nspcc-dev/neo-go/pkg/util/slice" objectgrpc "github.com/nspcc-dev/neofs-api-go/v2/object/grpc" "github.com/nspcc-dev/neofs-api-go/v2/rpc/client" status "github.com/nspcc-dev/neofs-api-go/v2/status/grpc" @@ -188,7 +187,7 @@ func TestClient_ReplicateObject(t *testing.T) { err := cli.ReplicateObject(ctx, demuxObj, signer) require.NoError(t, err) - msgCp := slice.Copy(demuxObj.(*demuxReplicationMessage).msg) + msgCp := bytes.Clone(demuxObj.(*demuxReplicationMessage).msg) initBufPtr := &demuxObj.(*demuxReplicationMessage).msg[0] var wg sync.WaitGroup diff --git a/container/container.go b/container/container.go index 03a5f34e..479fd47e 100644 --- a/container/container.go +++ b/container/container.go @@ -1,6 +1,7 @@ package container import ( + "bytes" "errors" "fmt" "strconv" @@ -51,14 +52,7 @@ func (x Container) CopyTo(dst *Container) { if owner := x.v2.GetOwnerID(); owner != nil { var newOwner refs.OwnerID - if val := owner.GetValue(); val != nil { - bts := make([]byte, len(val)) - copy(bts, val) - - newOwner.SetValue(bts) - } else { - newOwner.SetValue(nil) - } + newOwner.SetValue(bytes.Clone(owner.GetValue())) dst.v2.SetOwnerID(&newOwner) } else { @@ -74,13 +68,7 @@ func (x Container) CopyTo(dst *Container) { } // do we need to set the different nonce? - if nonce := x.v2.GetNonce(); nonce != nil { - newNonce := make([]byte, len(nonce)) - copy(newNonce, nonce) - dst.v2.SetNonce(nonce) - } else { - dst.v2.SetNonce(nil) - } + dst.v2.SetNonce(bytes.Clone(x.v2.GetNonce())) if len(x.v2.GetAttributes()) > 0 { dst.v2.SetAttributes([]container.Attribute{}) diff --git a/container/id/id_test.go b/container/id/id_test.go index 8c6afa3e..e1b07a0c 100644 --- a/container/id/id_test.go +++ b/container/id/id_test.go @@ -13,6 +13,7 @@ import ( ) func randSHA256Checksum() (cs [sha256.Size]byte) { + //nolint:staticcheck rand.Read(cs[:]) return } diff --git a/container/id/test/id.go b/container/id/test/id.go index c8e7deb5..0fa5197f 100644 --- a/container/id/test/id.go +++ b/container/id/test/id.go @@ -10,7 +10,7 @@ import ( // ID returns random cid.ID. func ID() cid.ID { checksum := [sha256.Size]byte{} - + //nolint:staticcheck rand.Read(checksum[:]) return IDWithChecksum(checksum) diff --git a/crypto/crypto_test.go b/crypto/crypto_test.go index 90b36bff..4549cc55 100644 --- a/crypto/crypto_test.go +++ b/crypto/crypto_test.go @@ -13,6 +13,7 @@ import ( func TestSignature(t *testing.T) { data := make([]byte, 512) + //nolint:staticcheck rand.Read(data) k, err := keys.NewPrivateKey() diff --git a/eacl/target.go b/eacl/target.go index 32f7a80a..bbe65039 100644 --- a/eacl/target.go +++ b/eacl/target.go @@ -32,10 +32,8 @@ func (t Target) CopyTo(dst *Target) { dst.role = t.role dst.keys = make([][]byte, len(t.keys)) - for i, k := range t.keys { - dst.keys[i] = make([]byte, len(k)) - - copy(dst.keys[i], t.keys[i]) + for i := range t.keys { + dst.keys[i] = bytes.Clone(t.keys[i]) } } diff --git a/eacl/test/benchmark_test.go b/eacl/test/benchmark_test.go index 95072cd8..6e514b3b 100644 --- a/eacl/test/benchmark_test.go +++ b/eacl/test/benchmark_test.go @@ -78,6 +78,7 @@ func TargetN(n int) *eacl.Target { for i := 0; i < n; i++ { keys[i] = make([]byte, 32) + //nolint:staticcheck rand.Read(keys[i]) } diff --git a/eacl/validator_test.go b/eacl/validator_test.go index de6de30d..82a86b78 100644 --- a/eacl/validator_test.go +++ b/eacl/validator_test.go @@ -229,7 +229,7 @@ func makeKeys(t *testing.T, n int) [][]byte { for i := range pubs { pubs[i] = make([]byte, 33) pubs[i][0] = 0x02 - + //nolint:staticcheck _, err := rand.Read(pubs[i][1:]) require.NoError(t, err) } diff --git a/go.mod b/go.mod index 8aa49a6b..b6761ad6 100644 --- a/go.mod +++ b/go.mod @@ -1,21 +1,21 @@ module github.com/nspcc-dev/neofs-sdk-go -go 1.19 +go 1.20 require ( github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20221202181307-76fa05c21b12 github.com/google/uuid v1.6.0 github.com/hashicorp/golang-lru/v2 v2.0.7 github.com/mr-tron/base58 v1.2.0 - github.com/nspcc-dev/hrw/v2 v2.0.0-20231115095647-bf62f4ad0a43 - github.com/nspcc-dev/neo-go v0.102.0 - github.com/nspcc-dev/neofs-api-go/v2 v2.14.1-0.20240213170208-cfca09b5acbe - github.com/nspcc-dev/tzhash v1.7.1 + github.com/nspcc-dev/hrw/v2 v2.0.1 + github.com/nspcc-dev/neo-go v0.105.1 + github.com/nspcc-dev/neofs-api-go/v2 v2.14.1-0.20240227143122-fb2ed146aef8 + github.com/nspcc-dev/tzhash v1.7.2 github.com/stretchr/testify v1.8.4 github.com/testcontainers/testcontainers-go v0.24.1 - go.uber.org/zap v1.26.0 - google.golang.org/grpc v1.59.0 - google.golang.org/protobuf v1.31.0 + go.uber.org/zap v1.27.0 + google.golang.org/grpc v1.62.0 + google.golang.org/protobuf v1.32.0 ) require ( @@ -28,7 +28,7 @@ require ( github.com/containerd/log v0.1.0 // indirect github.com/cpuguy83/dockercfg v0.3.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect github.com/docker/docker v24.0.6+incompatible // indirect github.com/docker/go-connections v0.4.0 // indirect @@ -45,8 +45,7 @@ require ( github.com/moby/sys/sequential v0.5.0 // indirect github.com/moby/term v0.5.0 // indirect github.com/morikuni/aec v1.0.0 // indirect - github.com/nspcc-dev/neofs-crypto v0.4.0 // indirect - github.com/nspcc-dev/rfc6979 v0.2.0 // indirect + github.com/nspcc-dev/rfc6979 v0.2.1 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc6 // indirect github.com/opencontainers/runc v1.1.12 // indirect @@ -60,14 +59,14 @@ require ( github.com/tklauser/numcpus v0.6.0 // indirect github.com/twmb/murmur3 v1.1.8 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect - go.uber.org/multierr v1.10.0 // indirect - golang.org/x/crypto v0.19.0 // indirect - golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect - golang.org/x/mod v0.13.0 // indirect - golang.org/x/net v0.17.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/crypto v0.20.0 // indirect + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect + golang.org/x/mod v0.15.0 // indirect + golang.org/x/net v0.21.0 // indirect golang.org/x/sys v0.17.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/tools v0.14.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect + golang.org/x/tools v0.18.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 4778ae96..2d07a71d 100644 --- a/go.sum +++ b/go.sum @@ -22,9 +22,8 @@ github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v24.0.6+incompatible h1:hceabKCtUgDqPu+qm0NgsaXf28Ljf4/pWFL7xjWWDgE= @@ -42,8 +41,8 @@ github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= @@ -72,18 +71,16 @@ github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= -github.com/nspcc-dev/hrw/v2 v2.0.0-20231115095647-bf62f4ad0a43 h1:zXkCRGTHqhkBRJo+EOSnwfDyv7excpz2qN/RQUknm5A= -github.com/nspcc-dev/hrw/v2 v2.0.0-20231115095647-bf62f4ad0a43/go.mod h1:BGU4YsuoFXjQddsCfUXpq5uNr2A8W4PrWbiljdD/TpU= -github.com/nspcc-dev/neo-go v0.102.0 h1:O2Gt4JPOWmp0c+PnPWwd2wPI74BKSwkaNCEyvyQTWJw= -github.com/nspcc-dev/neo-go v0.102.0/go.mod h1:QXxpZxJT2KedwM0Nlj8UO0/fZN2WIe4h/i03uBHKbnc= -github.com/nspcc-dev/neofs-api-go/v2 v2.14.1-0.20240213170208-cfca09b5acbe h1:Hoq88+PWS6tNnX4Y0jxE0C8wvxPI8UlVnCs2ZJDEy4Y= -github.com/nspcc-dev/neofs-api-go/v2 v2.14.1-0.20240213170208-cfca09b5acbe/go.mod h1:eaffSBIGhXUIMYvRBGXmlgQRLyyCWlzOft9jGYlqwrw= -github.com/nspcc-dev/neofs-crypto v0.4.0 h1:5LlrUAM5O0k1+sH/sktBtrgfWtq1pgpDs09fZo+KYi4= -github.com/nspcc-dev/neofs-crypto v0.4.0/go.mod h1:6XJ8kbXgOfevbI2WMruOtI+qUJXNwSGM/E9eClXxPHs= -github.com/nspcc-dev/rfc6979 v0.2.0 h1:3e1WNxrN60/6N0DW7+UYisLeZJyfqZTNOjeV/toYvOE= -github.com/nspcc-dev/rfc6979 v0.2.0/go.mod h1:exhIh1PdpDC5vQmyEsGvc4YDM/lyQp/452QxGq/UEso= -github.com/nspcc-dev/tzhash v1.7.1 h1:6zmexLqdTF/ssbUAh7XJS7RxgKWaw28kdNpE/4UFdEU= -github.com/nspcc-dev/tzhash v1.7.1/go.mod h1:cIZAGSF8wA9Q8I9Yj9Ytc/IFpsdA54ZAQ5dLXijq178= +github.com/nspcc-dev/hrw/v2 v2.0.1 h1:CxYUkBeJvNfMEn2lHhrV6FjY8pZPceSxXUtMVq0BUOU= +github.com/nspcc-dev/hrw/v2 v2.0.1/go.mod h1:iZAs5hT2q47EGq6AZ0FjaUI6ggntOi7vrY4utfzk5VA= +github.com/nspcc-dev/neo-go v0.105.1 h1:r0b2yIwLBi+ARBKU94gHL9oTFEB/XMJ0YlS2HN9Qw34= +github.com/nspcc-dev/neo-go v0.105.1/go.mod h1:GNh0cRALV/cuj+/xg2ZHDsrFbqcInqG7jjhqsLEnlNc= +github.com/nspcc-dev/neofs-api-go/v2 v2.14.1-0.20240227143122-fb2ed146aef8 h1:hbHDYntNoj3pjKoXfpLSesnmfbYUYTh2q1GRPWxWJy0= +github.com/nspcc-dev/neofs-api-go/v2 v2.14.1-0.20240227143122-fb2ed146aef8/go.mod h1:7Tm1NKEoUVVIUlkVwFrPh7GG5+Lmta2m7EGr4oVpBd8= +github.com/nspcc-dev/rfc6979 v0.2.1 h1:8wWxkamHWFmO790GsewSoKUSJjVnL1fmdRpokU/RgRM= +github.com/nspcc-dev/rfc6979 v0.2.1/go.mod h1:Tk7h5kyUWkhjyO3zUgFFhy1v2vQv3BvQEntakdtqrWc= +github.com/nspcc-dev/tzhash v1.7.2 h1:iRXoa9TJqH/DQO7FFcqpq9BdruF9E7/xnFGlIghl5J4= +github.com/nspcc-dev/tzhash v1.7.2/go.mod h1:oHiH0qwmTsZkeVs7pvCS5cVXUaLhXxSFvnmnZ++ijm4= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0-rc6 h1:XDqvyKsJEbRtATzkgItUqBA7QHk58yxX1Ov9HERHNqU= @@ -127,32 +124,32 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= -go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ= -go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= -golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -173,20 +170,20 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= -google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= -google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c h1:NUsgEN92SQQqzfA+YtqYNqYmB3DMMYLlIwUZAQFVFbo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= +google.golang.org/grpc v1.62.0 h1:HQKZ/fa1bXkX1oFOvSjmZEUL8wLSaZTjCcLAlmZRtdk= +google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/netmap/selector_test.go b/netmap/selector_test.go index 10906c8f..234557da 100644 --- a/netmap/selector_test.go +++ b/netmap/selector_test.go @@ -25,6 +25,7 @@ func BenchmarkHRWSort(b *testing.B) { weights := make([]float64, netmapSize) for i := range vectors { key := make([]byte, 33) + //nolint:staticcheck rand.Read(key) var node NodeInfo diff --git a/netmap/test/generate.go b/netmap/test/generate.go index 053ad981..9cfb37ac 100644 --- a/netmap/test/generate.go +++ b/netmap/test/generate.go @@ -72,6 +72,7 @@ func NetworkInfo() (x netmap.NetworkInfo) { // NodeInfo returns random netmap.NodeInfo. func NodeInfo() (x netmap.NodeInfo) { key := make([]byte, 33) + //nolint:staticcheck rand.Read(key) x.SetPublicKey(key) diff --git a/object/id/test/generate.go b/object/id/test/generate.go index 27575848..75fa0780 100644 --- a/object/id/test/generate.go +++ b/object/id/test/generate.go @@ -11,7 +11,7 @@ import ( // ID returns random oid.ID. func ID() oid.ID { checksum := [sha256.Size]byte{} - + //nolint:staticcheck rand.Read(checksum[:]) return idWithChecksum(checksum) diff --git a/object/object.go b/object/object.go index 87271ee4..ca5b03a9 100644 --- a/object/object.go +++ b/object/object.go @@ -1,6 +1,7 @@ package object import ( + "bytes" "errors" "fmt" "strings" @@ -73,7 +74,7 @@ func (o Object) CopyTo(dst *Object) { header := (*object.Object)(&o).GetHeader() (*object.Object)(dst).SetHeader(copyHeader(header)) - dst.SetPayload(copyByteSlice(o.Payload())) + dst.SetPayload(bytes.Clone(o.Payload())) } // MarshalHeaderJSON marshals object's header into JSON format. diff --git a/object/object_copy.go b/object/object_copy.go index 9fe716ca..9771a476 100644 --- a/object/object_copy.go +++ b/object/object_copy.go @@ -1,28 +1,20 @@ package object import ( + "bytes" + "github.com/nspcc-dev/neofs-api-go/v2/object" "github.com/nspcc-dev/neofs-api-go/v2/refs" v2session "github.com/nspcc-dev/neofs-api-go/v2/session" ) -func copyByteSlice(sl []byte) []byte { - if sl == nil { - return nil - } - - bts := make([]byte, len(sl)) - copy(bts, sl) - return bts -} - func copyObjectID(id *refs.ObjectID) *refs.ObjectID { if id == nil { return nil } var newID refs.ObjectID - newID.SetValue(copyByteSlice(id.GetValue())) + newID.SetValue(bytes.Clone(id.GetValue())) return &newID } @@ -34,8 +26,8 @@ func copySignature(sig *refs.Signature) *refs.Signature { var newSig refs.Signature newSig.SetScheme(sig.GetScheme()) - newSig.SetKey(copyByteSlice(sig.GetKey())) - newSig.SetSign(copyByteSlice(sig.GetSign())) + newSig.SetKey(bytes.Clone(sig.GetKey())) + newSig.SetSign(bytes.Clone(sig.GetSign())) return &newSig } @@ -48,11 +40,11 @@ func copySession(session *v2session.Token) *v2session.Token { var newSession v2session.Token if body := session.GetBody(); body != nil { var newBody v2session.TokenBody - newBody.SetID(copyByteSlice(body.GetID())) + newBody.SetID(bytes.Clone(body.GetID())) if ownerID := body.GetOwnerID(); ownerID != nil { var newOwnerID refs.OwnerID - newOwnerID.SetValue(copyByteSlice(ownerID.GetValue())) + newOwnerID.SetValue(bytes.Clone(ownerID.GetValue())) newBody.SetOwnerID(&newOwnerID) } else { @@ -66,7 +58,7 @@ func copySession(session *v2session.Token) *v2session.Token { newBody.SetLifetime(nil) } - newBody.SetSessionKey(copyByteSlice(body.GetSessionKey())) + newBody.SetSessionKey(bytes.Clone(body.GetSessionKey())) // it is an interface. Both implementations do nothing inside implemented functions. newBody.SetContext(body.GetContext()) @@ -103,7 +95,7 @@ func copySplitHeader(spl *object.SplitHeader) *object.SplitHeader { newSpl.SetChildren(nil) } - newSpl.SetSplitID(copyByteSlice(spl.GetSplitID())) + newSpl.SetSplitID(bytes.Clone(spl.GetSplitID())) return &newSpl } @@ -128,7 +120,7 @@ func copyHeader(header *object.Header) *object.Header { if containerID := header.GetContainerID(); containerID != nil { var newContainerID refs.ContainerID - newContainerID.SetValue(copyByteSlice(containerID.GetValue())) + newContainerID.SetValue(bytes.Clone(containerID.GetValue())) newHeader.SetContainerID(&newContainerID) } else { @@ -137,7 +129,7 @@ func copyHeader(header *object.Header) *object.Header { if ownerID := header.GetOwnerID(); ownerID != nil { var newOwnerID refs.OwnerID - newOwnerID.SetValue(copyByteSlice(ownerID.GetValue())) + newOwnerID.SetValue(bytes.Clone(ownerID.GetValue())) newHeader.SetOwnerID(&newOwnerID) } else { @@ -147,7 +139,7 @@ func copyHeader(header *object.Header) *object.Header { if payloadHash := header.GetPayloadHash(); payloadHash != nil { var newPayloadHash refs.Checksum newPayloadHash.SetType(payloadHash.GetType()) - newPayloadHash.SetSum(copyByteSlice(payloadHash.GetSum())) + newPayloadHash.SetSum(bytes.Clone(payloadHash.GetSum())) newHeader.SetPayloadHash(&newPayloadHash) } else { @@ -157,7 +149,7 @@ func copyHeader(header *object.Header) *object.Header { if homoHash := header.GetHomomorphicHash(); homoHash != nil { var newHomoHash refs.Checksum newHomoHash.SetType(homoHash.GetType()) - newHomoHash.SetSum(copyByteSlice(homoHash.GetSum())) + newHomoHash.SetSum(bytes.Clone(homoHash.GetSum())) newHeader.SetHomomorphicHash(&newHomoHash) } else { diff --git a/object/search_test.go b/object/search_test.go index f6cc9445..8f0c7d6c 100644 --- a/object/search_test.go +++ b/object/search_test.go @@ -136,7 +136,7 @@ func TestSearchFilters_AddPhyFilter(t *testing.T) { func testOID() oid.ID { cs := [sha256.Size]byte{} - + //nolint:staticcheck rand.Read(cs[:]) var id oid.ID @@ -278,6 +278,7 @@ func TestSearchMatchType_String(t *testing.T) { func testChecksumSha256() [sha256.Size]byte { cs := [sha256.Size]byte{} + //nolint:staticcheck rand.Read(cs[:]) return cs @@ -285,6 +286,7 @@ func testChecksumSha256() [sha256.Size]byte { func testChecksumTZ() [tz.Size]byte { cs := [tz.Size]byte{} + //nolint:staticcheck rand.Read(cs[:]) return cs diff --git a/object/slicer/slicer_test.go b/object/slicer/slicer_test.go index e0009777..2eff46b9 100644 --- a/object/slicer/slicer_test.go +++ b/object/slicer/slicer_test.go @@ -200,6 +200,7 @@ type input struct { func randomData(size uint64) []byte { data := make([]byte, size) + //nolint:staticcheck rand.Read(data) return data } @@ -836,6 +837,7 @@ func TestSlicedObjectsHaveSplitID(t *testing.T) { var containerID cid.ID id := make([]byte, sha256.Size) + //nolint:staticcheck _, err := rand.Read(id) require.NoError(t, err) containerID.Encode(id) @@ -861,6 +863,7 @@ func TestSlicedObjectsHaveSplitID(t *testing.T) { require.NoError(t, err) payload := make([]byte, maxObjectSize*overheadAmount) + //nolint:staticcheck _, err = rand.Read(payload) require.NoError(t, err) @@ -897,6 +900,7 @@ func TestSlicedObjectsHaveSplitID(t *testing.T) { for i := uint64(0); i < overheadAmount; i++ { payload := make([]byte, maxObjectSize) + //nolint:staticcheck _, err = rand.Read(payload) require.NoError(t, err) @@ -931,6 +935,7 @@ func TestSlicedObjectsHaveSplitID(t *testing.T) { require.NoError(t, err) payload := make([]byte, maxObjectSize-1) + //nolint:staticcheck _, err = rand.Read(payload) require.NoError(t, err) @@ -1184,6 +1189,7 @@ func BenchmarkKnownPayloadSize(b *testing.B) { hdr := *obj.CutPayload() signer := user.NewSigner(test.RandomSigner(b), usertest.ID(b)) payload := make([]byte, tc.size) + //nolint:staticcheck rand.Read(payload) var opts slicer.Options @@ -1204,6 +1210,7 @@ func BenchmarkKnownPayloadSize(b *testing.B) { hdr := *obj.CutPayload() signer := user.NewSigner(test.RandomSigner(b), usertest.ID(b)) payload := make([]byte, tc.size) + //nolint:staticcheck rand.Read(payload) var opts slicer.Options diff --git a/object/tombstone_test.go b/object/tombstone_test.go index 62d50505..2b9d5bee 100644 --- a/object/tombstone_test.go +++ b/object/tombstone_test.go @@ -18,6 +18,7 @@ func generateIDList(sz int) []oid.ID { var oID oid.ID res[i] = oID + //nolint:staticcheck rand.Read(cs[:]) res[i].SetSHA256(cs) } diff --git a/session/common.go b/session/common.go index 7636c67e..9c7f525f 100644 --- a/session/common.go +++ b/session/common.go @@ -42,34 +42,11 @@ func (x commonData) copyTo(dst *commonData) { dst.iat = x.iat dst.nbf = x.nbf dst.exp = x.exp - - if auth := x.authKey; auth != nil { - dst.authKey = make([]byte, len(x.authKey)) - copy(dst.authKey, x.authKey) - } else { - dst.authKey = nil - } - + dst.authKey = bytes.Clone(x.authKey) dst.sigSet = x.sigSet - if sig := x.sig.GetKey(); sig != nil { - bts := make([]byte, len(sig)) - copy(bts, sig) - - dst.sig.SetKey(bts) - } else { - dst.sig.SetKey(nil) - } - + dst.sig.SetKey(bytes.Clone(x.sig.GetKey())) dst.sig.SetScheme(x.sig.GetScheme()) - - if sign := x.sig.GetSign(); sign != nil { - bts := make([]byte, len(sign)) - copy(bts, sign) - - dst.sig.SetSign(sign) - } else { - dst.sig.SetSign(nil) - } + dst.sig.SetSign(bytes.Clone(x.sig.GetSign())) } // reads commonData and custom context from the session.Token message. diff --git a/session/container_test.go b/session/container_test.go index 3b157492..ad761778 100644 --- a/session/container_test.go +++ b/session/container_test.go @@ -1,13 +1,13 @@ package session_test import ( + "bytes" "fmt" "math" "math/rand" "testing" "github.com/google/uuid" - "github.com/nspcc-dev/neo-go/pkg/util/slice" "github.com/nspcc-dev/neofs-api-go/v2/refs" v2session "github.com/nspcc-dev/neofs-api-go/v2/session" cidtest "github.com/nspcc-dev/neofs-sdk-go/container/id/test" @@ -177,7 +177,7 @@ func TestContainerProtocolV2(t *testing.T) { breakSign: func(m *v2session.Token) { body := m.GetBody() key := body.GetSessionKey() - cp := slice.Copy(key) + cp := bytes.Clone(key) cp[len(cp)-1]++ body.SetSessionKey(cp) }, @@ -581,6 +581,7 @@ func TestContainer_VerifyDataSignature(t *testing.T) { var tok session.Container data := make([]byte, 100) + //nolint:staticcheck rand.Read(data) var sig neofscrypto.Signature diff --git a/session/object_test.go b/session/object_test.go index 40344511..9f70c320 100644 --- a/session/object_test.go +++ b/session/object_test.go @@ -1,13 +1,13 @@ package session_test import ( + "bytes" "fmt" "math" "math/rand" "testing" "github.com/google/uuid" - "github.com/nspcc-dev/neo-go/pkg/util/slice" "github.com/nspcc-dev/neofs-api-go/v2/refs" v2session "github.com/nspcc-dev/neofs-api-go/v2/session" cidtest "github.com/nspcc-dev/neofs-sdk-go/container/id/test" @@ -182,7 +182,7 @@ func TestObjectProtocolV2(t *testing.T) { breakSign: func(m *v2session.Token) { body := m.GetBody() key := body.GetSessionKey() - cp := slice.Copy(key) + cp := bytes.Clone(key) cp[len(cp)-1]++ body.SetSessionKey(cp) }, diff --git a/user/id_test.go b/user/id_test.go index 525164df..97db311c 100644 --- a/user/id_test.go +++ b/user/id_test.go @@ -1,12 +1,12 @@ package user_test import ( + "bytes" "math/rand" "testing" "github.com/mr-tron/base58" "github.com/nspcc-dev/neo-go/pkg/util" - "github.com/nspcc-dev/neo-go/pkg/util/slice" "github.com/nspcc-dev/neofs-api-go/v2/refs" "github.com/nspcc-dev/neofs-sdk-go/user" usertest "github.com/nspcc-dev/neofs-sdk-go/user/test" @@ -15,6 +15,7 @@ import ( func TestID_WalletBytes(t *testing.T) { var scriptHash util.Uint160 + //nolint:staticcheck rand.Read(scriptHash[:]) var id user.ID @@ -31,6 +32,7 @@ func TestID_WalletBytes(t *testing.T) { func TestID_SetScriptHash(t *testing.T) { var scriptHash util.Uint160 + //nolint:staticcheck rand.Read(scriptHash[:]) var id user.ID @@ -70,7 +72,7 @@ func TestV2_ID(t *testing.T) { }) t.Run("invalid prefix", func(t *testing.T) { - val := slice.Copy(val) + val := bytes.Clone(val) val[0]++ m.SetValue(val) @@ -80,7 +82,7 @@ func TestV2_ID(t *testing.T) { }) t.Run("invalid checksum", func(t *testing.T) { - val := slice.Copy(val) + val := bytes.Clone(val) val[21]++ m.SetValue(val)