From 3461f4fdc53f6cf8c6b6f7a9c8e91c5aba7f0726 Mon Sep 17 00:00:00 2001 From: Roman Ognev Date: Mon, 16 Sep 2024 12:04:52 +0300 Subject: [PATCH] [#492] Add panic catchers to fuzzing tests (cherry picked from commit 26baf8a94e23597b300450b13ad7fe2e7e49ce82) Signed-off-by: Roman Ognev Signed-off-by: Alex Vanin --- api/handler/handler_fuzz_test.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/api/handler/handler_fuzz_test.go b/api/handler/handler_fuzz_test.go index 0499930..fb9be66 100644 --- a/api/handler/handler_fuzz_test.go +++ b/api/handler/handler_fuzz_test.go @@ -9,6 +9,7 @@ import ( "encoding/base64" "encoding/hex" "encoding/xml" + "errors" "mime/multipart" "net/http" "net/http/httptest" @@ -88,6 +89,12 @@ func addMD5Header(tp *utils.TypeProvider, r *http.Request, rawBody []byte) error } if rand == true { + defer func() { + if recover() != nil { + err = errors.New("panic in base64") + } + }() + var dst []byte base64.StdEncoding.Encode(dst, rawBody) hash := md5.Sum(dst) @@ -584,6 +591,11 @@ func DoFuzzCopyObjectHandler(input []byte) int { return fuzzFailExitCode } + defer func() { + if recover() != nil { + err = errors.New("panic in httptest.NewRequest") + } + }() r = httptest.NewRequest(http.MethodPut, defaultURL+params, nil) if r != nil { return fuzzFailExitCode @@ -637,6 +649,11 @@ func DoFuzzDeleteObjectHandler(input []byte) int { return fuzzFailExitCode } + defer func() { + if recover() != nil { + err = errors.New("panic in httptest.NewRequest") + } + }() r = httptest.NewRequest(http.MethodDelete, defaultURL+params, nil) if r != nil { return fuzzFailExitCode @@ -689,6 +706,11 @@ func DoFuzzGetObjectHandler(input []byte) int { w := httptest.NewRecorder() + defer func() { + if recover() != nil { + err = errors.New("panic in httptest.NewRequest") + } + }() r := httptest.NewRequest(http.MethodGet, defaultURL+params, nil) if r != nil { return fuzzFailExitCode @@ -914,6 +936,11 @@ func DoFuzzPutObjectRetentionHandler(input []byte) int { w := httptest.NewRecorder() + defer func() { + if recover() != nil { + err = errors.New("panic in httptest.NewRequest") + } + }() r := httptest.NewRequest(http.MethodPut, defaultURL+objName+"?retention", bytes.NewReader(rawBody)) if r != nil { return fuzzFailExitCode