diff options
author | nickajacks1 <128185314+nickajacks1@users.noreply.github.com> | 2024-01-05 21:39:23 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-06 13:39:23 +0800 |
commit | f0905a14d1117335c08b7eb586e409eef24846fc (patch) | |
tree | 1aac56c01248ba86df27bae805faf3a1480ea712 | |
parent | test(expvarhandler): fix failure when using -count to run more than once (#1688) (diff) | |
download | fasthttp-f0905a14d1117335c08b7eb586e409eef24846fc.tar.gz fasthttp-f0905a14d1117335c08b7eb586e409eef24846fc.tar.bz2 fasthttp-f0905a14d1117335c08b7eb586e409eef24846fc.zip |
test: migrate remaining fuzzit tests to go 1.18 fuzzing (#1687)
-rw-r--r-- | fuzzit/request/request_fuzz.go | 26 | ||||
-rw-r--r-- | fuzzit/response/response_fuzz.go | 26 | ||||
-rw-r--r-- | fuzzit/url/url_fuzz.go | 23 | ||||
-rw-r--r-- | http_test.go | 26 | ||||
-rw-r--r-- | uri_test.go | 19 |
5 files changed, 45 insertions, 75 deletions
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() |