test: fuzz: bring in fuzzers (#12152)

Adds fuzzers and passes we've built since 2020 and before, that use
oss-fuzz's continuous fuzzing infrastructure.

Fixes #7921.
This commit is contained in:
Emmanuel T Odeke 2022-06-07 05:46:45 -07:00 committed by GitHub
parent 2b7aca73d2
commit dfb60e781b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
973 changed files with 2243 additions and 1 deletions

14
fuzz/README.md Normal file
View File

@ -0,0 +1,14 @@
# Fuzzing
## Running
The fuzz tests are in standard [Go format](https://go.dev/doc/fuzz/).
To run a fuzz test, use the `-fuzz` flag to `go test`. For example:
```
$ go test -fuzz FuzzCryptoHDNewParamsFromPath ./tests
```
## oss-fuzz build status
https://oss-fuzz-build-logs.storage.googleapis.com/index.html#cosmos-sdk

35
fuzz/oss-fuzz-build.sh Normal file
View File

@ -0,0 +1,35 @@
#!/bin/bash
set -euo pipefail
export FUZZ_ROOT="github.com/cosmos/cosmos-sdk"
build_go_fuzzer() {
local function="$1"
local fuzzer="$2"
gotip run github.com/orijtech/otils/corpus2ossfuzz@latest -o "$OUT"/"$fuzzer"_seed_corpus.zip -corpus fuzz/tests/testdata/fuzz/"$function"
compile_native_go_fuzzer "$FUZZ_ROOT"/fuzz/tests "$function" "$fuzzer"
}
gotip get github.com/AdamKorcz/go-118-fuzz-build/utils
gotip get github.com/prometheus/common/expfmt@v0.32.1
build_go_fuzzer FuzzCryptoHDDerivePrivateKeyForPath fuzz_crypto_hd_deriveprivatekeyforpath
build_go_fuzzer FuzzCryptoHDNewParamsFromPath fuzz_crypto_hd_newparamsfrompath
build_go_fuzzer FuzzCryptoTypesCompactbitarrayMarshalUnmarshal fuzz_crypto_types_compactbitarray_marshalunmarshal
build_go_fuzzer FuzzStoreInternalProofsCreateNonmembershipProof fuzz_store_internal_proofs_createnonmembershipproof
build_go_fuzzer FuzzTendermintAminoDecodeTime fuzz_tendermint_amino_decodetime
build_go_fuzzer FuzzTypesParseCoin fuzz_types_parsecoin
build_go_fuzzer FuzzTypesParseDecCoin fuzz_types_parsedeccoin
build_go_fuzzer FuzzTypesParseTimeBytes fuzz_types_parsetimebytes
build_go_fuzzer FuzzTypesVerifyAddressFormat fuzz_types_verifyaddressformat
build_go_fuzzer FuzzTypesDecSetString fuzz_types_dec_setstring
build_go_fuzzer FuzzUnknownProto fuzz_unknownproto
build_go_fuzzer FuzzXBankTypesAddressFromBalancesStore fuzz_x_bank_types_addressfrombalancesstore

View File

@ -0,0 +1,34 @@
//go:build gofuzz || go1.18
package tests
import (
"bytes"
"testing"
"github.com/cosmos/cosmos-sdk/crypto/hd"
bip39 "github.com/cosmos/go-bip39"
)
func mnemonicToSeed(mnemonic string) []byte {
return bip39.NewSeed(mnemonic, "" /* Default passphrase */)
}
func FuzzCryptoHDDerivePrivateKeyForPath(f *testing.F) {
f.Fuzz(func(t *testing.T, in []byte) {
splits := bytes.Split(in, []byte("*"))
if len(splits) == 1 {
return
}
mnemonic, path := splits[0], splits[1]
if len(path) > 1e5 {
// Deriving a private key takes non-trivial time proportional
// to the path length. Skip the longer ones that trigger timeouts
// on fuzzing infrastructure.
return
}
seed := mnemonicToSeed(string(mnemonic))
master, ch := hd.ComputeMastersFromSeed(seed)
hd.DerivePrivateKeyForPath(master, ch, string(path))
})
}

View File

@ -0,0 +1,15 @@
//go:build gofuzz || go1.18
package tests
import (
"testing"
"github.com/cosmos/cosmos-sdk/crypto/hd"
)
func FuzzCryptoHDNewParamsFromPath(f *testing.F) {
f.Fuzz(func(t *testing.T, data []byte) {
hd.NewParamsFromPath(string(data))
})
}

View File

@ -0,0 +1,27 @@
//go:build gofuzz || go1.18
package tests
import (
"testing"
"github.com/cosmos/cosmos-sdk/crypto/types"
)
func FuzzCryptoTypesCompactbitarrayMarshalUnmarshal(f *testing.F) {
f.Fuzz(func(t *testing.T, data []byte) {
cba, err := types.CompactUnmarshal(data)
if err != nil {
return
}
if cba == nil && string(data) != "null" {
panic("Inconsistency, no error, yet BitArray is nil")
}
if cba.SetIndex(-1, true) {
panic("Set negative index success")
}
if cba.GetIndex(-1) {
panic("Get negative index success")
}
})
}

View File

@ -0,0 +1,37 @@
//go:build gofuzz || go1.18
package tests
/*
// TODO: Retrofit to the right parameters for CreateNonmembershipProof
import (
"encoding/json"
"testing"
iavlproofs "github.com/cosmos/cosmos-sdk/store/tools/ics23/iavl"
)
type serialize struct {
Data map[string][]byte
Key string
}
func FuzzStoreInternalProofsCreateNonmembershipProof(f *testing.F) {
f.Fuzz(func(t *testing.T, data []byte) {
sz := new(serialize)
if err := json.Unmarshal(data, sz); err != nil {
return
}
if len(sz.Data) == 0 || len(sz.Key) == 0 {
return
}
icp, err := iavlproofs.CreateNonMembershipProof(sz.Data, []byte(sz.Key))
if err != nil {
return
}
if icp == nil {
panic("nil CommitmentProof with nil error")
}
})
}
*/

View File

@ -0,0 +1,25 @@
//go:build gofuzz || go1.18
package tests
import (
"fmt"
"testing"
amino "github.com/tendermint/go-amino"
)
func FuzzTendermintAminoDecodeTime(f *testing.F) {
f.Fuzz(func(t *testing.T, data []byte) {
if len(data) == 0 {
return
}
_, n, err := amino.DecodeTime(data)
if err != nil {
return
}
if n < 0 {
panic(fmt.Sprintf("n=%d < 0", n))
}
})
}

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u2003\u2003\u202f\u2003\u202f\u202f\u2003\u202f\u202f\u202f\u2003\u2003\u202f\u202f\u2003\u202f\u2003\u202f\u2003\u202f\u202f\u2003\u202f\u202f\u2003\u202f\u2003\u202f\u202f\u2003\u202f/9")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u2003\u2003\u202f\u2003\u202f\u202f\u2003\u202f\u2003\u202f/6")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*\u00a0\r\v\r\fm/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u2003\u2003\u2003\u202f/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("artwork blanket carpet cricket disorder disorder artwork blanket carpet cricket disorder disorder*1'/2147483647'/1/0'/0/0\n")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("s!*1/1/0/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("der*1'/8/1/0'/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m/1*********************************************************************")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1'/8'/0'/1'/0'/5'/8'/8'/8'")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\r\f\r\f\f\r\f\r\r\f\r\f\f\r\f\f\r\f/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("I am become Death, the destroyer of worlds!*m/1'/2147483647'/1/0'/0/0\n")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*\u00a0m\v\r\f\f\r\f\r\r/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1/1/0/1/0/1/0/1/0/0/0/0/0/1/1/0/0/0/0/0/0/1/0/0/0/0/0/1/1/0/0/0/0/0/0/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0/9")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1/1/0/11/0/1/0/1/0/1/0/0/0/0/0/0/0/0/0/1/1/0/0/0/0/0/0/130/0/0/0/0/1/0/1/0/1/0/0/0/0/0/1/1/0/0/0/0/0/0/1/0/0/0/0/0/1/1/0/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("I ald*1/7")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\r\f\r\f\r\f\r\f/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u2003\u2003\u202f\u2003\u202f\u202f\u2003\u202f\u202f\u2003\u202f/6")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\r\f\r\f/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\v\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1'/8'/8'/0'/1'/0'/5'/8'/8'/8'/0'/1'/0'/5'/8'/8'/8'")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("e!*1/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*\u00a0m/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("der*1/8/11/4/0'/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*\f\r\f\r\f\r\f\r\f\r\r\f\r\r\r\f\r\f\r\f\r\f\r\f\r\f\r\f\r\r\f\r\r\r\f\rm/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*5/1////////")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\r\f\r\f\r\f\r\f\r\r\f\r\f\r\f\r\r\f\r\r\r\f\r\f\r\f\r\f\r\f\r\f\r\f\r\r\f\r\r\r\f\r\r\r\f\r\f\r\f\r\f\r\f\r\f\r\f\r\r\f\r\r\r\f\r\f/6")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1/1/0/1/0/11/0/0/0/0/0/1/1/0/0/0/0/0/0/1/0/0/0/0/0/1/1/0/0/0/0/0/0/1/0/0/0/0/0/1/1/0/0/0/0/0/0/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1/1/0/1/0/1/0/0/0/0/0/1/1/0/0/0/5/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m/1***")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("de\xc1*1/8/4/0/1")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u2003\u2003\u202f\u00a0\u00a0\u00a0\u00a0\u00a0\u2003\u202f\u202f\u2003\u202f\u202f\u00a0\u00a0\u00a0\u202f\u2003\u00a0\u00a0\u2003\u202f\u202f\u2003\u202f\u2003\u202f\u00a0\u00a0\u00a0\u00a0\u00a0\u2003\u202f\u202f\u2003\u202f\u2003\u202f/9")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("carpet cricket disorder cricket cricket artwork carpet cricket disorder cricket cricket artwork*m/44'/0'/0'/0/0\n")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*5/1//")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u2003\u2003/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u2003\u202f\u2003\u202f\u2003\u202f/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*\r\f\r\f\r\f\r\f\r\r\fm/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1'/8'/0'/8'")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1/1/0/11/0/1/0/1/0/1/0/0/0/0/0/0/0/0/0/1/1/0/0/0/0/0/0/1/0/0/0/0/0/1/0/1/0/1/0/0/0/0/0/1/1/0/0/0/0/0/0/1/0/0/0/0/0/1/1/0/0/0/0/0/0/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*\f\r\f\r\f\r\f\r\f\r\r\f\r\r\r\f\r\f\rm/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*5/1////////////////")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m/1********************************")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1/1/0/1/0/0/0/0/0/1/1/0/0/0/0/0/0/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("!*1/1/0/0/0/0/0/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("!*1/1/0/0/0/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m/1********")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*\f\r\f\r\f\r\f\r\f\r\r\f\r\f\r\f\r\r\f\r\r\r\f\r\f\r\f\r\f\r\f\r\f\r\f\r\r\f\r\r\r\f\r\r\r\f\r\f\r\f\r\f\r\f\r\f\r\f\r\r\f\r\r\r\f\rm/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*5/1////")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*\f\r\f\rm/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1/1/0/1/0/11/0/0/0/0/0/1/1/0/0/0/0/0/0/1/0/0/0/0/0/1/1/0/0/0/0/0/0/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("I am ecome Death, the destroyer of worlds!*m/1'")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*111/0/11/0/1/0/1/0/1/0/0/0/0/0/0/0/0/0/1/1/0/0/0/0/0/0/1/0/0/0/0/0/1/0/1/0/1/0/0/0/0/1/1/0/0/0/0/0/0/100/0/1/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("s\xde*1/1/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u2003\u2003\u202f\u00a0\u00a0\u00a0\u00a0\v\u00a0\u00a0\u00a0\u2003\u202f\u202f\u2003\u202f\u2003\u202f/3")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u2003\u2003\u2003\u2003/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("wolf af*1/1/0/0/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("wlardarafraidket carpet cricket*44'/118'/52/1/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1'/8'/0'/1'/8'/8'")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\r\f/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*\u00a0\v\r\f\f\r\f\r\rm\v\r\f\f\r\f\r\r/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("wolf afraid artwork blanket carpet cricket wolf afraid artwork blanket carpet cricket*m/44'/118'/52'/1/41\n")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u2003\u2003\u202f\u00a0\u00a0\u00a0\u00a0\u00a0\u2003\u202f\u202f\u2003\u202f\u202f\u00a0\u00a0\u00a0\u00a0\u00a0\u2003\u202f\u202f\u2003\u202f\u2003\u202f\u00a0\u00a0\u00a0\u00a0\u00a0\u2003\u202f\u202f\u2003\u202f\u2003\u202f/9")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("8CKrN2cPg/Fvyt0Xlp/DoCzjA0CQQDU\ny2ptGsuSmgUtWj3NM9xuwYPm+Z/F84K6+ARYiZ6PYj013sovGKUFfYAqVXVlxtIX\nqyUBnu3X9ps8ZfjLZO7BAkEAlT4R5Yl6cGhaJQYZHOde3JEMhNRcVFMO8dJDaFeo\nf9Oeos0UUothgiDktdQHxdNEwLjQf7lJJBzV+5OtwswCWA==\n-----END RSA TESTING KEY-----*\u00a0m/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1/1/0/11/0/1/0/1/0/1/0/0/0/0/0/0/0/0/0/0/1/1/0/0/130/0/0/0/0/1/0/4/0/1/0/0/1")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1/1/0/1/0/1/0/0/0/0/0/1/1/0/0/0/0/0/0/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u2003\u202f\u2003\u2003\u2003\u202f/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*\u00a0\f\r\f\r\f\r\f\r\r\f\r\r\r\f\r\f\r\f\r\f\r\f\r\f\r\f\r\r\f\r\r\r\f\rm/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m/1****************")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1/1/0/0/0/0/0/1/0/1/0/0/0/0/0/1/1/0/0/0/0/0/0/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*\u00a0\v\v\r\f\f\r\f\r\r\r\f\f\r\f\r\rm/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u2003\u2003\u202f\u00a0\u00a0\u00a0\u00a0\u00a0\u2003\u202f\u202f\u2003\u202f\u2003\u202f\u00a0\u00a0\u00a0\u00a0\u00a0\u2003\u202f\u202f\u2003\u202f\u2003\u202f/3")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1/1/0/11/0/1/0/1/0/1/0/0/0/0/0/0/0/0/0/1/0/0/1/0/1/0/1/0/0/0/0/0/1/1/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f/9")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u2003\u2003\u202f\u2003\u202f\u202f\u2003\u202f\u202f\u202f\u2003\u2003\u202f\u202f\u2003\u202f\u2003\u202f\u2003\u202f\u202f\u2003\u202f\u202f\u2003\u202f\u2003\u202f\u202f\u202f\u202f\u2003\u202f/9")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m/1**")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*\u00a0m\v\r\f\r/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("der*1'/8/11/4/0'/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u2003/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u2003\u2003\u2003\u2003\u2003\u2003/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\r\f\v\r\f\f\r\f\r\r/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1/1/0/11/0/1/0/1/0/1/0/0/0/0/0/0/0/0/0/0/1/1/0/0/0/0/0/0/130/0/0/0/1/0/1/0/1/0/0/0/0/0/1/1/0/0/0/0/0/1/0/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*\u00a0m\v\r\f\r\r\f\r\r\f\r\f\r\f\r\r\f\r\r\r\f\r\f\r\f\r\f\r\f\r\f\r\f\r\r\f\r\r\r\f\r\r\r\f\r\f\r\r\f\r\f\r\r\f\r\f\r\f\r\f\r\f\r\f\r\r\f\r\r\r\f\r\f/6")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("wlardartwor blnkt capetcicket wolf afraid artwork blarket carpet cricket*44'/118'/52'/1")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0/9")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*\f\r\f\r\f\r\f\rm/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*1/1/0/11/0/1/0/1/0/1/0/0/0/0/0/0/0/0/0/0/1/1/0/0/130/0/0/0/0/1/0/0/0/1/0/0/10/0/0/0/0/1/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*\u00a0m\v\r\f\r\r\f\r\r\f\r\f\r\f\r\r\f\r\r\r\f\r\f\r\f\r\f\r\f\r\f\r\f\r\r\f\r\r\r\f\r\r\r\f\r\f\r\f\r\f\r\f\r\f\r\f\r\r\f\r\r\r\f\r\f/6")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*m\v\u00a0\u00a0\u00a0\u00a0/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("c*5/1/4")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("s*1/1/0/1/0/0/0/0/0/1/1/0/0/0/0/0/0/0/0")

View File

@ -0,0 +1,2 @@
go test fuzz v1
[]byte("*\u00a0m\v/4")

Some files were not shown because too many files have changed in this diff Show More