diff --git a/.gitignore b/.gitignore index 935946b..30521a8 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ .\#* .*.sw? *.coverprofile -go-i2p \ No newline at end of file +*exportable-fuzz.zip +go-i2p diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..3f9f709 --- /dev/null +++ b/Makefile @@ -0,0 +1,8 @@ +fuzz: + go-fuzz-build -o lib/common/fuzz/keys_and_cert/exportable-fuzz.zip github.com/hkparker/go-i2p/lib/common/fuzz/keys_and_cert + go-fuzz-build -o lib/common/fuzz/certificate/exportable-fuzz.zip github.com/hkparker/go-i2p/lib/common/fuzz/certificate + go-fuzz-build -o lib/common/fuzz/destination/exportable-fuzz.zip github.com/hkparker/go-i2p/lib/common/fuzz/destination + go-fuzz-build -o lib/common/fuzz/router_address/exportable-fuzz.zip github.com/hkparker/go-i2p/lib/common/fuzz/router_address + go-fuzz-build -o lib/common/fuzz/router_identity/exportable-fuzz.zip github.com/hkparker/go-i2p/lib/common/fuzz/router_identity + go-fuzz-build -o lib/common/fuzz/string/exportable-fuzz.zip github.com/hkparker/go-i2p/lib/common/fuzz/string + forego start diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..8662ccc --- /dev/null +++ b/Procfile @@ -0,0 +1,6 @@ +keys_and_cert: go-fuzz -bin=lib/common/fuzz/keys_and_cert/exportable-fuzz.zip -workdir=lib/common/fuzz/keys_and_cert -procs=1 +certificate: go-fuzz -bin=lib/common/fuzz/certificate/exportable-fuzz.zip -workdir=lib/common/fuzz/certificate -procs=1 +destination: go-fuzz -bin=lib/common/fuzz/destination/exportable-fuzz.zip -workdir=lib/common/fuzz/destination -procs=1 +router_address: go-fuzz -bin=lib/common/fuzz/router_address/exportable-fuzz.zip -workdir=lib/common/fuzz/router_address -procs=1 +router_identity: go-fuzz -bin=lib/common/fuzz/router_identity/exportable-fuzz.zip -workdir=lib/common/fuzz/router_identity -procs=1 +string: go-fuzz -bin=lib/common/fuzz/string/exportable-fuzz.zip -workdir=lib/common/fuzz/string -procs=1 diff --git a/lib/common/fuzz/Dockerfile b/lib/common/fuzz/Dockerfile new file mode 100644 index 0000000..846fbe3 --- /dev/null +++ b/lib/common/fuzz/Dockerfile @@ -0,0 +1,13 @@ +FROM golang + +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get install libsodium-dev -y + +RUN go get github.com/dvyukov/go-fuzz/go-fuzz +RUN go get github.com/dvyukov/go-fuzz/go-fuzz-build +RUN go get github.com/hkparker/go-i2p + +WORKDIR /go/src/github.com/hkparker/go-i2p + +ENTRYPOINT ["make", "fuzz"] diff --git a/lib/common/fuzz/certificate/corpus/1ef624482d620e43e6d34da1afe46267fc695d9b b/lib/common/fuzz/certificate/corpus/1ef624482d620e43e6d34da1afe46267fc695d9b new file mode 100644 index 0000000..6b255e1 Binary files /dev/null and b/lib/common/fuzz/certificate/corpus/1ef624482d620e43e6d34da1afe46267fc695d9b differ diff --git a/lib/common/fuzz/certificate/corpus/3949ab99dd419690fafea153a4ab82956ec2e9f5 b/lib/common/fuzz/certificate/corpus/3949ab99dd419690fafea153a4ab82956ec2e9f5 new file mode 100644 index 0000000..c0adf65 Binary files /dev/null and b/lib/common/fuzz/certificate/corpus/3949ab99dd419690fafea153a4ab82956ec2e9f5 differ diff --git a/lib/common/fuzz/certificate/corpus/3c7aeead1d941b685fe0958b19485f8e00c43d34 b/lib/common/fuzz/certificate/corpus/3c7aeead1d941b685fe0958b19485f8e00c43d34 new file mode 100644 index 0000000..046f393 Binary files /dev/null and b/lib/common/fuzz/certificate/corpus/3c7aeead1d941b685fe0958b19485f8e00c43d34 differ diff --git a/lib/common/fuzz/certificate/corpus/4cd0872139f7cae988acfce9a24e17a4c96897b6-1 b/lib/common/fuzz/certificate/corpus/4cd0872139f7cae988acfce9a24e17a4c96897b6-1 new file mode 100644 index 0000000..f7747f0 Binary files /dev/null and b/lib/common/fuzz/certificate/corpus/4cd0872139f7cae988acfce9a24e17a4c96897b6-1 differ diff --git a/lib/common/fuzz/certificate/corpus/5ba93c9db0cff93f52b521d7420e43f6eda2784f b/lib/common/fuzz/certificate/corpus/5ba93c9db0cff93f52b521d7420e43f6eda2784f new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/lib/common/fuzz/certificate/corpus/5ba93c9db0cff93f52b521d7420e43f6eda2784f differ diff --git a/lib/common/fuzz/certificate/corpus/70b8bc8d904b1a29a6877833e647c543fa5e5679 b/lib/common/fuzz/certificate/corpus/70b8bc8d904b1a29a6877833e647c543fa5e5679 new file mode 100644 index 0000000..bdff0e1 Binary files /dev/null and b/lib/common/fuzz/certificate/corpus/70b8bc8d904b1a29a6877833e647c543fa5e5679 differ diff --git a/lib/common/fuzz/certificate/corpus/9842926af7ca0a8cca12604f945414f07b01e13d b/lib/common/fuzz/certificate/corpus/9842926af7ca0a8cca12604f945414f07b01e13d new file mode 100644 index 0000000..fc2b569 --- /dev/null +++ b/lib/common/fuzz/certificate/corpus/9842926af7ca0a8cca12604f945414f07b01e13d @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/common/fuzz/certificate/corpus/a7b38a4d7e82ebf894b495ebeb0f94d6b73b2669-1 b/lib/common/fuzz/certificate/corpus/a7b38a4d7e82ebf894b495ebeb0f94d6b73b2669-1 new file mode 100644 index 0000000..2421b76 Binary files /dev/null and b/lib/common/fuzz/certificate/corpus/a7b38a4d7e82ebf894b495ebeb0f94d6b73b2669-1 differ diff --git a/lib/common/fuzz/certificate/corpus/da39a3ee5e6b4b0d3255bfef95601890afd80709 b/lib/common/fuzz/certificate/corpus/da39a3ee5e6b4b0d3255bfef95601890afd80709 new file mode 100644 index 0000000..e69de29 diff --git a/lib/common/fuzz/certificate/corpus/test-input-1 b/lib/common/fuzz/certificate/corpus/test-input-1 new file mode 100644 index 0000000..fd76034 Binary files /dev/null and b/lib/common/fuzz/certificate/corpus/test-input-1 differ diff --git a/lib/common/fuzz/certificate/corpus/test-input-10 b/lib/common/fuzz/certificate/corpus/test-input-10 new file mode 100644 index 0000000..09f370e Binary files /dev/null and b/lib/common/fuzz/certificate/corpus/test-input-10 differ diff --git a/lib/common/fuzz/certificate/corpus/test-input-2 b/lib/common/fuzz/certificate/corpus/test-input-2 new file mode 100644 index 0000000..7c60e41 Binary files /dev/null and b/lib/common/fuzz/certificate/corpus/test-input-2 differ diff --git a/lib/common/fuzz/certificate/corpus/test-input-3 b/lib/common/fuzz/certificate/corpus/test-input-3 new file mode 100644 index 0000000..d8d3825 --- /dev/null +++ b/lib/common/fuzz/certificate/corpus/test-input-3 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/common/fuzz/certificate/corpus/test-input-4 b/lib/common/fuzz/certificate/corpus/test-input-4 new file mode 100644 index 0000000..1c74043 Binary files /dev/null and b/lib/common/fuzz/certificate/corpus/test-input-4 differ diff --git a/lib/common/fuzz/certificate/corpus/test-input-5 b/lib/common/fuzz/certificate/corpus/test-input-5 new file mode 100644 index 0000000..987b60e Binary files /dev/null and b/lib/common/fuzz/certificate/corpus/test-input-5 differ diff --git a/lib/common/fuzz/certificate/corpus/test-input-6 b/lib/common/fuzz/certificate/corpus/test-input-6 new file mode 100644 index 0000000..4888fb0 Binary files /dev/null and b/lib/common/fuzz/certificate/corpus/test-input-6 differ diff --git a/lib/common/fuzz/certificate/corpus/test-input-7 b/lib/common/fuzz/certificate/corpus/test-input-7 new file mode 100644 index 0000000..a07c978 Binary files /dev/null and b/lib/common/fuzz/certificate/corpus/test-input-7 differ diff --git a/lib/common/fuzz/certificate/corpus/test-input-8 b/lib/common/fuzz/certificate/corpus/test-input-8 new file mode 100644 index 0000000..0c85ea7 Binary files /dev/null and b/lib/common/fuzz/certificate/corpus/test-input-8 differ diff --git a/lib/common/fuzz/certificate/corpus/test-input-9 b/lib/common/fuzz/certificate/corpus/test-input-9 new file mode 100644 index 0000000..8bd6770 Binary files /dev/null and b/lib/common/fuzz/certificate/corpus/test-input-9 differ diff --git a/lib/common/fuzz/certificate/fuzz.go b/lib/common/fuzz/certificate/fuzz.go new file mode 100644 index 0000000..28fbed1 --- /dev/null +++ b/lib/common/fuzz/certificate/fuzz.go @@ -0,0 +1,11 @@ +package exportable + +import "github.com/hkparker/go-i2p/lib/common" + +func Fuzz(data []byte) int { + cert := common.Certificate(data) + cert.Data() + cert.Length() + cert.Type() + return 0 +} diff --git a/lib/common/fuzz/destination/corpus/3832fe54a60281d245d8a17b992629bad4b5a6a9 b/lib/common/fuzz/destination/corpus/3832fe54a60281d245d8a17b992629bad4b5a6a9 new file mode 100644 index 0000000..1d35a62 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/3832fe54a60281d245d8a17b992629bad4b5a6a9 differ diff --git a/lib/common/fuzz/destination/corpus/3f29546453678b855931c174a97d6c0894b8f546 b/lib/common/fuzz/destination/corpus/3f29546453678b855931c174a97d6c0894b8f546 new file mode 100644 index 0000000..bdc955b Binary files /dev/null and b/lib/common/fuzz/destination/corpus/3f29546453678b855931c174a97d6c0894b8f546 differ diff --git a/lib/common/fuzz/destination/corpus/6d7aaa7d2bcca4a8758b398ab7617839203c828a b/lib/common/fuzz/destination/corpus/6d7aaa7d2bcca4a8758b398ab7617839203c828a new file mode 100644 index 0000000..280a6c8 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/6d7aaa7d2bcca4a8758b398ab7617839203c828a differ diff --git a/lib/common/fuzz/destination/corpus/9438e360f578e12c0e0e8ed28e2c125c1cefee16-1 b/lib/common/fuzz/destination/corpus/9438e360f578e12c0e0e8ed28e2c125c1cefee16-1 new file mode 100644 index 0000000..15ee40e Binary files /dev/null and b/lib/common/fuzz/destination/corpus/9438e360f578e12c0e0e8ed28e2c125c1cefee16-1 differ diff --git a/lib/common/fuzz/destination/corpus/corpus/46859acd63346200860afb148cb447e293c2837c-1 b/lib/common/fuzz/destination/corpus/corpus/46859acd63346200860afb148cb447e293c2837c-1 new file mode 100644 index 0000000..969ef40 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/corpus/46859acd63346200860afb148cb447e293c2837c-1 differ diff --git a/lib/common/fuzz/destination/corpus/corpus/5ff31659ca03d5508285399652243143042abb20 b/lib/common/fuzz/destination/corpus/corpus/5ff31659ca03d5508285399652243143042abb20 new file mode 100644 index 0000000..c9cfa10 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/corpus/5ff31659ca03d5508285399652243143042abb20 differ diff --git a/lib/common/fuzz/destination/corpus/corpus/6729889dd49c146eebb2fd69ab0560ab8c049c4b b/lib/common/fuzz/destination/corpus/corpus/6729889dd49c146eebb2fd69ab0560ab8c049c4b new file mode 100644 index 0000000..075c412 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/corpus/6729889dd49c146eebb2fd69ab0560ab8c049c4b differ diff --git a/lib/common/fuzz/destination/corpus/corpus/8dc00598417d4eb788a77ac6ccef3cb484905d8b b/lib/common/fuzz/destination/corpus/corpus/8dc00598417d4eb788a77ac6ccef3cb484905d8b new file mode 100644 index 0000000..b0b2b1c --- /dev/null +++ b/lib/common/fuzz/destination/corpus/corpus/8dc00598417d4eb788a77ac6ccef3cb484905d8b @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/common/fuzz/destination/corpus/corpus/93436ea60c5dcdd2e9893a025f560ab72422ae8c b/lib/common/fuzz/destination/corpus/corpus/93436ea60c5dcdd2e9893a025f560ab72422ae8c new file mode 100644 index 0000000..3dba171 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/corpus/93436ea60c5dcdd2e9893a025f560ab72422ae8c differ diff --git a/lib/common/fuzz/destination/corpus/corpus/test-input-1 b/lib/common/fuzz/destination/corpus/corpus/test-input-1 new file mode 100644 index 0000000..01188b2 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/corpus/test-input-1 differ diff --git a/lib/common/fuzz/destination/corpus/corpus/test-input-128 b/lib/common/fuzz/destination/corpus/corpus/test-input-128 new file mode 100644 index 0000000..65f57c2 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/corpus/test-input-128 differ diff --git a/lib/common/fuzz/destination/corpus/corpus/test-input-128-1 b/lib/common/fuzz/destination/corpus/corpus/test-input-128-1 new file mode 100644 index 0000000..dc2e4b2 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/corpus/test-input-128-1 differ diff --git a/lib/common/fuzz/destination/corpus/corpus/test-input-128-2 b/lib/common/fuzz/destination/corpus/corpus/test-input-128-2 new file mode 100644 index 0000000..913a93f Binary files /dev/null and b/lib/common/fuzz/destination/corpus/corpus/test-input-128-2 differ diff --git a/lib/common/fuzz/destination/corpus/corpus/test-input-128-3 b/lib/common/fuzz/destination/corpus/corpus/test-input-128-3 new file mode 100644 index 0000000..d0061d5 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/corpus/test-input-128-3 differ diff --git a/lib/common/fuzz/destination/corpus/corpus/test-input-2 b/lib/common/fuzz/destination/corpus/corpus/test-input-2 new file mode 100644 index 0000000..e5d5a24 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/corpus/test-input-2 differ diff --git a/lib/common/fuzz/destination/corpus/corpus/test-input-256 b/lib/common/fuzz/destination/corpus/corpus/test-input-256 new file mode 100644 index 0000000..a64a5a9 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/corpus/test-input-256 differ diff --git a/lib/common/fuzz/destination/corpus/corpus/test-input-256-1 b/lib/common/fuzz/destination/corpus/corpus/test-input-256-1 new file mode 100644 index 0000000..ba6613c Binary files /dev/null and b/lib/common/fuzz/destination/corpus/corpus/test-input-256-1 differ diff --git a/lib/common/fuzz/destination/corpus/corpus/test-input-256-2 b/lib/common/fuzz/destination/corpus/corpus/test-input-256-2 new file mode 100644 index 0000000..bc4b527 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/corpus/test-input-256-2 differ diff --git a/lib/common/fuzz/destination/corpus/corpus/test-input-256-3 b/lib/common/fuzz/destination/corpus/corpus/test-input-256-3 new file mode 100644 index 0000000..98323f2 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/corpus/test-input-256-3 differ diff --git a/lib/common/fuzz/destination/corpus/corpus/test-input-3 b/lib/common/fuzz/destination/corpus/corpus/test-input-3 new file mode 100644 index 0000000..4227ca4 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/corpus/test-input-3 differ diff --git a/lib/common/fuzz/destination/corpus/da39a3ee5e6b4b0d3255bfef95601890afd80709 b/lib/common/fuzz/destination/corpus/da39a3ee5e6b4b0d3255bfef95601890afd80709 new file mode 100644 index 0000000..e69de29 diff --git a/lib/common/fuzz/destination/corpus/test-input-128-256-1 b/lib/common/fuzz/destination/corpus/test-input-128-256-1 new file mode 100644 index 0000000..4a894a3 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/test-input-128-256-1 differ diff --git a/lib/common/fuzz/destination/corpus/test-input-128-256-2 b/lib/common/fuzz/destination/corpus/test-input-128-256-2 new file mode 100644 index 0000000..be89cec Binary files /dev/null and b/lib/common/fuzz/destination/corpus/test-input-128-256-2 differ diff --git a/lib/common/fuzz/destination/corpus/test-input-128-256-3 b/lib/common/fuzz/destination/corpus/test-input-128-256-3 new file mode 100644 index 0000000..8105533 Binary files /dev/null and b/lib/common/fuzz/destination/corpus/test-input-128-256-3 differ diff --git a/lib/common/fuzz/destination/fuzz.go b/lib/common/fuzz/destination/fuzz.go new file mode 100644 index 0000000..3bb085c --- /dev/null +++ b/lib/common/fuzz/destination/fuzz.go @@ -0,0 +1,10 @@ +package exportable + +import "github.com/hkparker/go-i2p/lib/common" + +func Fuzz(data []byte) int { + destination := common.Destination(data) + destination.Base32Address() + destination.Base64() + return 0 +} diff --git a/lib/common/fuzz/keys_and_cert/corpus/46859acd63346200860afb148cb447e293c2837c-1 b/lib/common/fuzz/keys_and_cert/corpus/46859acd63346200860afb148cb447e293c2837c-1 new file mode 100644 index 0000000..969ef40 Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/46859acd63346200860afb148cb447e293c2837c-1 differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/5ff31659ca03d5508285399652243143042abb20 b/lib/common/fuzz/keys_and_cert/corpus/5ff31659ca03d5508285399652243143042abb20 new file mode 100644 index 0000000..c9cfa10 Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/5ff31659ca03d5508285399652243143042abb20 differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/6729889dd49c146eebb2fd69ab0560ab8c049c4b b/lib/common/fuzz/keys_and_cert/corpus/6729889dd49c146eebb2fd69ab0560ab8c049c4b new file mode 100644 index 0000000..075c412 Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/6729889dd49c146eebb2fd69ab0560ab8c049c4b differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/8dc00598417d4eb788a77ac6ccef3cb484905d8b b/lib/common/fuzz/keys_and_cert/corpus/8dc00598417d4eb788a77ac6ccef3cb484905d8b new file mode 100644 index 0000000..b0b2b1c --- /dev/null +++ b/lib/common/fuzz/keys_and_cert/corpus/8dc00598417d4eb788a77ac6ccef3cb484905d8b @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/common/fuzz/keys_and_cert/corpus/93436ea60c5dcdd2e9893a025f560ab72422ae8c b/lib/common/fuzz/keys_and_cert/corpus/93436ea60c5dcdd2e9893a025f560ab72422ae8c new file mode 100644 index 0000000..3dba171 Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/93436ea60c5dcdd2e9893a025f560ab72422ae8c differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/test-input-1 b/lib/common/fuzz/keys_and_cert/corpus/test-input-1 new file mode 100644 index 0000000..01188b2 Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/test-input-1 differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/test-input-128 b/lib/common/fuzz/keys_and_cert/corpus/test-input-128 new file mode 100644 index 0000000..65f57c2 Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/test-input-128 differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/test-input-128-1 b/lib/common/fuzz/keys_and_cert/corpus/test-input-128-1 new file mode 100644 index 0000000..dc2e4b2 Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/test-input-128-1 differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/test-input-128-2 b/lib/common/fuzz/keys_and_cert/corpus/test-input-128-2 new file mode 100644 index 0000000..913a93f Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/test-input-128-2 differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/test-input-128-256-1 b/lib/common/fuzz/keys_and_cert/corpus/test-input-128-256-1 new file mode 100644 index 0000000..4a894a3 Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/test-input-128-256-1 differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/test-input-128-256-2 b/lib/common/fuzz/keys_and_cert/corpus/test-input-128-256-2 new file mode 100644 index 0000000..be89cec Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/test-input-128-256-2 differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/test-input-128-256-3 b/lib/common/fuzz/keys_and_cert/corpus/test-input-128-256-3 new file mode 100644 index 0000000..8105533 Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/test-input-128-256-3 differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/test-input-128-3 b/lib/common/fuzz/keys_and_cert/corpus/test-input-128-3 new file mode 100644 index 0000000..d0061d5 Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/test-input-128-3 differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/test-input-2 b/lib/common/fuzz/keys_and_cert/corpus/test-input-2 new file mode 100644 index 0000000..e5d5a24 Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/test-input-2 differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/test-input-256 b/lib/common/fuzz/keys_and_cert/corpus/test-input-256 new file mode 100644 index 0000000..a64a5a9 Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/test-input-256 differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/test-input-256-1 b/lib/common/fuzz/keys_and_cert/corpus/test-input-256-1 new file mode 100644 index 0000000..ba6613c Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/test-input-256-1 differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/test-input-256-2 b/lib/common/fuzz/keys_and_cert/corpus/test-input-256-2 new file mode 100644 index 0000000..bc4b527 Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/test-input-256-2 differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/test-input-256-3 b/lib/common/fuzz/keys_and_cert/corpus/test-input-256-3 new file mode 100644 index 0000000..98323f2 Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/test-input-256-3 differ diff --git a/lib/common/fuzz/keys_and_cert/corpus/test-input-3 b/lib/common/fuzz/keys_and_cert/corpus/test-input-3 new file mode 100644 index 0000000..4227ca4 Binary files /dev/null and b/lib/common/fuzz/keys_and_cert/corpus/test-input-3 differ diff --git a/lib/common/fuzz/keys_and_cert/fuzz.go b/lib/common/fuzz/keys_and_cert/fuzz.go new file mode 100644 index 0000000..9e1aaa5 --- /dev/null +++ b/lib/common/fuzz/keys_and_cert/fuzz.go @@ -0,0 +1,11 @@ +package exportable + +import "github.com/hkparker/go-i2p/lib/common" + +func Fuzz(data []byte) int { + keys_and_cert, _, _ := common.ReadKeysAndCert(data) + keys_and_cert.Certificate() + keys_and_cert.PublicKey() + keys_and_cert.SigningPublicKey() + return 0 +} diff --git a/lib/common/fuzz/router_address/corpus/1678dbe0543c53f9e3af28c39781fc1f36e68923-1 b/lib/common/fuzz/router_address/corpus/1678dbe0543c53f9e3af28c39781fc1f36e68923-1 new file mode 100644 index 0000000..0afbbe3 Binary files /dev/null and b/lib/common/fuzz/router_address/corpus/1678dbe0543c53f9e3af28c39781fc1f36e68923-1 differ diff --git a/lib/common/fuzz/router_address/corpus/22175c4387d13a74890127402ab1725f38bdce0e-2 b/lib/common/fuzz/router_address/corpus/22175c4387d13a74890127402ab1725f38bdce0e-2 new file mode 100644 index 0000000..e701128 Binary files /dev/null and b/lib/common/fuzz/router_address/corpus/22175c4387d13a74890127402ab1725f38bdce0e-2 differ diff --git a/lib/common/fuzz/router_address/corpus/4991cc8dad31a281a092d8361fd92afb2998e754-2 b/lib/common/fuzz/router_address/corpus/4991cc8dad31a281a092d8361fd92afb2998e754-2 new file mode 100644 index 0000000..4f67524 --- /dev/null +++ b/lib/common/fuzz/router_address/corpus/4991cc8dad31a281a092d8361fd92afb2998e754-2 @@ -0,0 +1 @@ +\nkn wn Go type for \ No newline at end of file diff --git a/lib/common/fuzz/router_address/corpus/55616cbe045999832bb6ca0214fecb816373d1c9-3 b/lib/common/fuzz/router_address/corpus/55616cbe045999832bb6ca0214fecb816373d1c9-3 new file mode 100644 index 0000000..1ef5fd6 Binary files /dev/null and b/lib/common/fuzz/router_address/corpus/55616cbe045999832bb6ca0214fecb816373d1c9-3 differ diff --git a/lib/common/fuzz/router_address/corpus/9ade6778af8612b7408d3ad1a0c6da8f05b826f0 b/lib/common/fuzz/router_address/corpus/9ade6778af8612b7408d3ad1a0c6da8f05b826f0 new file mode 100644 index 0000000..483186d Binary files /dev/null and b/lib/common/fuzz/router_address/corpus/9ade6778af8612b7408d3ad1a0c6da8f05b826f0 differ diff --git a/lib/common/fuzz/router_address/corpus/da39a3ee5e6b4b0d3255bfef95601890afd80709-1 b/lib/common/fuzz/router_address/corpus/da39a3ee5e6b4b0d3255bfef95601890afd80709-1 new file mode 100644 index 0000000..e69de29 diff --git a/lib/common/fuzz/router_address/corpus/e7ef37d13413f3f141570e94730907951210dd5e-1 b/lib/common/fuzz/router_address/corpus/e7ef37d13413f3f141570e94730907951210dd5e-1 new file mode 100644 index 0000000..acfca24 Binary files /dev/null and b/lib/common/fuzz/router_address/corpus/e7ef37d13413f3f141570e94730907951210dd5e-1 differ diff --git a/lib/common/fuzz/router_address/corpus/test-input-1 b/lib/common/fuzz/router_address/corpus/test-input-1 new file mode 100644 index 0000000..8c39d3f Binary files /dev/null and b/lib/common/fuzz/router_address/corpus/test-input-1 differ diff --git a/lib/common/fuzz/router_address/corpus/test-input-2 b/lib/common/fuzz/router_address/corpus/test-input-2 new file mode 100644 index 0000000..a05799a Binary files /dev/null and b/lib/common/fuzz/router_address/corpus/test-input-2 differ diff --git a/lib/common/fuzz/router_address/crashers/0be2a4bbfac7e360f904dc1ec602b5c2e77cf0ba b/lib/common/fuzz/router_address/crashers/0be2a4bbfac7e360f904dc1ec602b5c2e77cf0ba new file mode 100644 index 0000000..a9416de Binary files /dev/null and b/lib/common/fuzz/router_address/crashers/0be2a4bbfac7e360f904dc1ec602b5c2e77cf0ba differ diff --git a/lib/common/fuzz/router_address/crashers/0be2a4bbfac7e360f904dc1ec602b5c2e77cf0ba.output b/lib/common/fuzz/router_address/crashers/0be2a4bbfac7e360f904dc1ec602b5c2e77cf0ba.output new file mode 100644 index 0000000..46b359a --- /dev/null +++ b/lib/common/fuzz/router_address/crashers/0be2a4bbfac7e360f904dc1ec602b5c2e77cf0ba.output @@ -0,0 +1,19 @@ +time="2017-04-07T21:24:51-07:00" level=warning msg="string format warning" at="(String) Length" expected_bytes_length=1 reason="data longer than specified" string_bytes_length=3 string_length_field=0 +panic: runtime error: slice bounds out of range + +goroutine 1 [running]: +panic(0x55732ff677e0, 0xc42000c1f0) + /tmp/go-fuzz-build303011531/goroot/src/runtime/panic.go:500 +0x1a1 +github.com/hkparker/go-i2p/lib/common.ReadRouterAddress(0x7ff24dbe0000, 0xc, 0x200000, 0x10, 0x350, 0x36, 0xc420053e88, 0x55732fec5cd3, 0x58e86613, 0x3747c069, ...) + /tmp/go-fuzz-build303011531/gopath/src/github.com/hkparker/go-i2p/lib/common/router_address.go:152 +0x450 +github.com/hkparker/go-i2p/lib/common/fuzz/router_address.Fuzz(0x7ff24dbe0000, 0xc, 0x200000, 0x0) + /tmp/go-fuzz-build303011531/gopath/src/github.com/hkparker/go-i2p/lib/common/fuzz/router_address/fuzz.go:6 +0x4c +go-fuzz-dep.Main(0x55732ff8f948) + /tmp/go-fuzz-build303011531/goroot/src/go-fuzz-dep/main.go:49 +0xe8 +main.main() + /tmp/go-fuzz-build303011531/gopath/src/github.com/hkparker/go-i2p/lib/common/fuzz/router_address/go.fuzz.main/main.go:10 +0x2d + +goroutine 17 [syscall, locked to thread]: +runtime.goexit() + /tmp/go-fuzz-build303011531/goroot/src/runtime/asm_amd64.s:2086 +0x1 +exit status 2 \ No newline at end of file diff --git a/lib/common/fuzz/router_address/crashers/0be2a4bbfac7e360f904dc1ec602b5c2e77cf0ba.quoted b/lib/common/fuzz/router_address/crashers/0be2a4bbfac7e360f904dc1ec602b5c2e77cf0ba.quoted new file mode 100644 index 0000000..cc6d113 --- /dev/null +++ b/lib/common/fuzz/router_address/crashers/0be2a4bbfac7e360f904dc1ec602b5c2e77cf0ba.quoted @@ -0,0 +1 @@ + "000000000\x0000" diff --git a/lib/common/fuzz/router_address/fuzz.go b/lib/common/fuzz/router_address/fuzz.go new file mode 100644 index 0000000..7e6ad51 --- /dev/null +++ b/lib/common/fuzz/router_address/fuzz.go @@ -0,0 +1,12 @@ +package exportable + +import "github.com/hkparker/go-i2p/lib/common" + +func Fuzz(data []byte) int { + router_address, _, _ := common.ReadRouterAddress(data) + router_address.Cost() + router_address.Expiration() + router_address.Options() + router_address.TransportStyle() + return 0 +} diff --git a/lib/common/fuzz/router_address/suppressions/964db7dc97cc5a9baca60d7c30bb4f8bdb5d207c b/lib/common/fuzz/router_address/suppressions/964db7dc97cc5a9baca60d7c30bb4f8bdb5d207c new file mode 100644 index 0000000..15e3dba --- /dev/null +++ b/lib/common/fuzz/router_address/suppressions/964db7dc97cc5a9baca60d7c30bb4f8bdb5d207c @@ -0,0 +1,6 @@ +panic: runtime error: slice bounds out of range +panic +github.com/hkparker/go-i2p/lib/common.ReadRouterAddress +github.com/hkparker/go-i2p/lib/common/fuzz/router_address.Fuzz +go-fuzz-dep.Main +main.main diff --git a/lib/common/fuzz/router_identity/corpus/test-input-1 b/lib/common/fuzz/router_identity/corpus/test-input-1 new file mode 100644 index 0000000..be89cec Binary files /dev/null and b/lib/common/fuzz/router_identity/corpus/test-input-1 differ diff --git a/lib/common/fuzz/router_identity/corpus/test-input-128 b/lib/common/fuzz/router_identity/corpus/test-input-128 new file mode 100644 index 0000000..65f57c2 Binary files /dev/null and b/lib/common/fuzz/router_identity/corpus/test-input-128 differ diff --git a/lib/common/fuzz/router_identity/corpus/test-input-2 b/lib/common/fuzz/router_identity/corpus/test-input-2 new file mode 100644 index 0000000..e19e3e4 Binary files /dev/null and b/lib/common/fuzz/router_identity/corpus/test-input-2 differ diff --git a/lib/common/fuzz/router_identity/corpus/test-input-3 b/lib/common/fuzz/router_identity/corpus/test-input-3 new file mode 100644 index 0000000..0012584 Binary files /dev/null and b/lib/common/fuzz/router_identity/corpus/test-input-3 differ diff --git a/lib/common/fuzz/router_identity/fuzz.go b/lib/common/fuzz/router_identity/fuzz.go new file mode 100644 index 0000000..224c85c --- /dev/null +++ b/lib/common/fuzz/router_identity/fuzz.go @@ -0,0 +1,11 @@ +package exportable + +import "github.com/hkparker/go-i2p/lib/common" + +func Fuzz(data []byte) int { + router_identity, _, _ := common.ReadRouterIdentity(data) + router_identity.Certificate() + router_identity.PublicKey() + router_identity.SigningPublicKey() + return 0 +} diff --git a/lib/common/fuzz/string/corpus/ac9231da4082430afe8f4d40127814c613648d8e b/lib/common/fuzz/string/corpus/ac9231da4082430afe8f4d40127814c613648d8e new file mode 100644 index 0000000..501a6bb --- /dev/null +++ b/lib/common/fuzz/string/corpus/ac9231da4082430afe8f4d40127814c613648d8e @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/common/fuzz/string/corpus/bf8b4530d8d246dd74ac53a13471bba17941dff7 b/lib/common/fuzz/string/corpus/bf8b4530d8d246dd74ac53a13471bba17941dff7 new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/lib/common/fuzz/string/corpus/bf8b4530d8d246dd74ac53a13471bba17941dff7 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/common/fuzz/string/corpus/test-input-1 b/lib/common/fuzz/string/corpus/test-input-1 new file mode 100644 index 0000000..aa7650d Binary files /dev/null and b/lib/common/fuzz/string/corpus/test-input-1 differ diff --git a/lib/common/fuzz/string/corpus/test-input-128 b/lib/common/fuzz/string/corpus/test-input-128 new file mode 100644 index 0000000..65f57c2 Binary files /dev/null and b/lib/common/fuzz/string/corpus/test-input-128 differ diff --git a/lib/common/fuzz/string/corpus/test-input-2 b/lib/common/fuzz/string/corpus/test-input-2 new file mode 100644 index 0000000..12db478 Binary files /dev/null and b/lib/common/fuzz/string/corpus/test-input-2 differ diff --git a/lib/common/fuzz/string/corpus/test-input-3 b/lib/common/fuzz/string/corpus/test-input-3 new file mode 100644 index 0000000..3d70d85 Binary files /dev/null and b/lib/common/fuzz/string/corpus/test-input-3 differ diff --git a/lib/common/fuzz/string/corpus/test-input-4 b/lib/common/fuzz/string/corpus/test-input-4 new file mode 100644 index 0000000..8bcd24d --- /dev/null +++ b/lib/common/fuzz/string/corpus/test-input-4 @@ -0,0 +1 @@ +  \ No newline at end of file diff --git a/lib/common/fuzz/string/corpus/test-input-5 b/lib/common/fuzz/string/corpus/test-input-5 new file mode 100644 index 0000000..ff79a63 --- /dev/null +++ b/lib/common/fuzz/string/corpus/test-input-5 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/common/fuzz/string/corpus/test-input-6 b/lib/common/fuzz/string/corpus/test-input-6 new file mode 100644 index 0000000..39209d1 --- /dev/null +++ b/lib/common/fuzz/string/corpus/test-input-6 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/common/fuzz/string/fuzz.go b/lib/common/fuzz/string/fuzz.go new file mode 100644 index 0000000..d958c8c --- /dev/null +++ b/lib/common/fuzz/string/fuzz.go @@ -0,0 +1,13 @@ +package exportable + +import "github.com/hkparker/go-i2p/lib/common" + +func Fuzz(data []byte) int { + str, _, _ := common.ReadString(data) + str.Data() + str.Length() + str, _ = common.ToI2PString(string(data)) + str.Data() + str.Length() + return 0 +}