From 9d813def5499ac969eed0c431fa4b39a7d76d746 Mon Sep 17 00:00:00 2001 From: jonaustin09 Date: Fri, 6 Oct 2023 15:51:38 -0400 Subject: [PATCH] fix: Fixes 275, Changed the gateway request URL encoding, to accept some more special characters --- integration/tests.go | 2 +- s3api/middlewares/url-decoder.go | 5 ----- s3api/utils/utils.go | 2 +- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/integration/tests.go b/integration/tests.go index da6b70a4..6918724a 100644 --- a/integration/tests.go +++ b/integration/tests.go @@ -1027,7 +1027,7 @@ func PutObject_non_existing_bucket(s *S3Conf) { func PutObject_special_chars(s *S3Conf) { testName := "PutObject_special_chars" actionHandler(s, testName, func(s3client *s3.Client, bucket string) error { - err := putObjects(s3client, []string{"foo%%", "bar^", "baz**"}, bucket) + err := putObjects(s3client, []string{"my%key", "my^key", "my*key", "my.key", "my-key", "my_key", "my!key", "my'key", "my(key", "my)key", "my\\key", "my{}key", "my[]key", "my`key", "my+key", "my%25key", "my@key"}, bucket) if err != nil { return err } diff --git a/s3api/middlewares/url-decoder.go b/s3api/middlewares/url-decoder.go index ea0019bf..34b6002a 100644 --- a/s3api/middlewares/url-decoder.go +++ b/s3api/middlewares/url-decoder.go @@ -31,11 +31,6 @@ func DecodeURL(logger s3log.AuditLogger) fiber.Handler { return controllers.SendResponse(ctx, s3err.GetAPIError(s3err.ErrInvalidURI), &controllers.MetaOpts{Logger: logger}) } ctx.Path(decoded.Path) - decodedURL, err := url.QueryUnescape(reqURL) - if err != nil { - return controllers.SendResponse(ctx, s3err.GetAPIError(s3err.ErrInvalidURI), &controllers.MetaOpts{Logger: logger}) - } - ctx.Request().SetRequestURI(decodedURL) return ctx.Next() } } diff --git a/s3api/utils/utils.go b/s3api/utils/utils.go index e285c4c7..7a0e9cba 100644 --- a/s3api/utils/utils.go +++ b/s3api/utils/utils.go @@ -52,7 +52,7 @@ func GetUserMetaData(headers *fasthttp.RequestHeader) (metadata map[string]strin func CreateHttpRequestFromCtx(ctx *fiber.Ctx, signedHdrs []string) (*http.Request, error) { req := ctx.Request() - httpReq, err := http.NewRequest(string(req.Header.Method()), req.URI().String(), bytes.NewReader(req.Body())) + httpReq, err := http.NewRequest(string(req.Header.Method()), string(ctx.Context().RequestURI()), bytes.NewReader(req.Body())) if err != nil { return nil, errors.New("error in creating an http request") }