aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar nickajacks1 <128185314+nickajacks1@users.noreply.github.com> 2024-01-05 21:39:23 -0800
committerGravatar GitHub <noreply@github.com> 2024-01-06 13:39:23 +0800
commitf0905a14d1117335c08b7eb586e409eef24846fc (patch)
tree1aac56c01248ba86df27bae805faf3a1480ea712
parenttest(expvarhandler): fix failure when using -count to run more than once (#1688) (diff)
downloadfasthttp-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.go26
-rw-r--r--fuzzit/response/response_fuzz.go26
-rw-r--r--fuzzit/url/url_fuzz.go23
-rw-r--r--http_test.go26
-rw-r--r--uri_test.go19
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()