From f0905a14d1117335c08b7eb586e409eef24846fc Mon Sep 17 00:00:00 2001 From: nickajacks1 <128185314+nickajacks1@users.noreply.github.com> Date: Fri, 5 Jan 2024 21:39:23 -0800 Subject: test: migrate remaining fuzzit tests to go 1.18 fuzzing (#1687) --- fuzzit/request/request_fuzz.go | 26 -------------------------- fuzzit/response/response_fuzz.go | 26 -------------------------- fuzzit/url/url_fuzz.go | 23 ----------------------- http_test.go | 26 ++++++++++++++++++++++++++ uri_test.go | 19 +++++++++++++++++++ 5 files changed, 45 insertions(+), 75 deletions(-) delete mode 100644 fuzzit/request/request_fuzz.go delete mode 100644 fuzzit/response/response_fuzz.go delete mode 100644 fuzzit/url/url_fuzz.go diff --git a/fuzzit/request/request_fuzz.go b/fuzzit/request/request_fuzz.go deleted file mode 100644 index 84b13e8..0000000 --- a/fuzzit/request/request_fuzz.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build gofuzz - -package fuzz - -import ( - "bufio" - "bytes" - - "github.com/valyala/fasthttp" -) - -func Fuzz(data []byte) int { - req := fasthttp.AcquireRequest() - defer fasthttp.ReleaseRequest(req) - - if err := req.ReadLimitBody(bufio.NewReader(bytes.NewReader(data)), 1024*1024); err != nil { - return 0 - } - - w := bytes.Buffer{} - if _, err := req.WriteTo(&w); err != nil { - return 0 - } - - return 1 -} diff --git a/fuzzit/response/response_fuzz.go b/fuzzit/response/response_fuzz.go deleted file mode 100644 index fe2a727..0000000 --- a/fuzzit/response/response_fuzz.go +++ /dev/null @@ -1,26 +0,0 @@ -//go:build gofuzz - -package fuzz - -import ( - "bufio" - "bytes" - - "github.com/valyala/fasthttp" -) - -func Fuzz(data []byte) int { - res := fasthttp.AcquireResponse() - defer fasthttp.ReleaseResponse(res) - - if err := res.ReadLimitBody(bufio.NewReader(bytes.NewReader(data)), 1024*1024); err != nil { - return 0 - } - - w := bytes.Buffer{} - if _, err := res.WriteTo(&w); err != nil { - return 0 - } - - return 1 -} diff --git a/fuzzit/url/url_fuzz.go b/fuzzit/url/url_fuzz.go deleted file mode 100644 index 1e7c5a2..0000000 --- a/fuzzit/url/url_fuzz.go +++ /dev/null @@ -1,23 +0,0 @@ -//go:build gofuzz - -package fuzz - -import ( - "bytes" - - "github.com/valyala/fasthttp" -) - -func Fuzz(data []byte) int { - u := fasthttp.AcquireURI() - defer fasthttp.ReleaseURI(u) - - u.UpdateBytes(data) - - w := bytes.Buffer{} - if _, err := u.WriteTo(&w); err != nil { - return 0 - } - - return 1 -} diff --git a/http_test.go b/http_test.go index 098990a..57f0220 100644 --- a/http_test.go +++ b/http_test.go @@ -1700,6 +1700,32 @@ func testRequestReadLimitBodySuccess(t *testing.T, s string, maxBodySize int) { } } +func FuzzResponseReadLimitBody(f *testing.F) { + res := AcquireResponse() + defer ReleaseResponse(res) + + f.Add([]byte("HTTP/1.1 200 OK\r\nContent-Type: aa\r\nContent-Length: 10\r\n\r\n9876543210"), 1024*1024) + + f.Fuzz(func(t *testing.T, body []byte, max int) { + _ = res.ReadLimitBody(bufio.NewReader(bytes.NewReader(body)), max) + w := bytes.Buffer{} + _, _ = res.WriteTo(&w) + }) +} + +func FuzzRequestReadLimitBody(f *testing.F) { + req := AcquireRequest() + defer ReleaseRequest(req) + + f.Add([]byte("POST /a HTTP/1.1\r\nHost: a.com\r\nTransfer-Encoding: chunked\r\nContent-Type: aa\r\n\r\n6\r\nfoobar\r\n3\r\nbaz\r\n0\r\nfoobar\r\n\r\n"), 1024*1024) + + f.Fuzz(func(t *testing.T, body []byte, max int) { + _ = req.ReadLimitBody(bufio.NewReader(bytes.NewReader(body)), max) + w := bytes.Buffer{} + _, _ = req.WriteTo(&w) + }) +} + func TestRequestString(t *testing.T) { t.Parallel() diff --git a/uri_test.go b/uri_test.go index 5996bcb..c3f6d9b 100644 --- a/uri_test.go +++ b/uri_test.go @@ -9,6 +9,25 @@ import ( "time" ) +func FuzzURIUpdateBytes(f *testing.F) { + u := AcquireURI() + defer ReleaseURI(u) + + f.Add([]byte(`http://foobar.com/aaa/bb?cc`)) + f.Add([]byte(`//foobar.com/aaa/bb?cc`)) + f.Add([]byte(`/aaa/bb?cc`)) + f.Add([]byte(`xx?yy=abc`)) + + f.Fuzz(func(t *testing.T, uri []byte) { + u.UpdateBytes(uri) + + w := bytes.Buffer{} + if _, err := u.WriteTo(&w); err != nil { + t.Fatalf("unexpected error: %v", err) + } + }) +} + func TestURICopyToQueryArgs(t *testing.T) { t.Parallel() -- cgit v1.2.3