From 8ae81ba0f1f7fab8b3f183f91e99ce458101a574 Mon Sep 17 00:00:00 2001 From: Pavel Pogodaev Date: Fri, 18 Oct 2024 12:13:44 +0300 Subject: [PATCH] [#134] Support percent-encoding Signed-off-by: Pavel Pogodaev --- CHANGELOG.md | 1 + internal/handler/handler.go | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 04b60f6..ec81d36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ This document outlines major changes between releases. ## [Unreleased] ## [0.30.2] - 2024-09-03 +- Support percent-encoding for GET queries (#134) ### Added - Fuzzing tests (#135) diff --git a/internal/handler/handler.go b/internal/handler/handler.go index 197649e..62b4e1c 100644 --- a/internal/handler/handler.go +++ b/internal/handler/handler.go @@ -195,6 +195,12 @@ func (h *Handler) byObjectName(req *fasthttp.RequestCtx, f func(context.Context, log = h.log.With(zap.String("bucketname", bucketname), zap.String("key", key)) ) + unescapedKey, err := url.QueryUnescape(key) + if err != nil { + logAndSendBucketError(req, log, err) + return + } + ctx := utils.GetContextFromRequest(req) bktInfo, err := h.getBucketInfo(ctx, bucketname, log) @@ -203,7 +209,7 @@ func (h *Handler) byObjectName(req *fasthttp.RequestCtx, f func(context.Context, return } - foundOid, err := h.tree.GetLatestVersion(ctx, &bktInfo.CID, key) + foundOid, err := h.tree.GetLatestVersion(ctx, &bktInfo.CID, unescapedKey) if err != nil { if errors.Is(err, tree.ErrNodeAccessDenied) { response.Error(req, "Access Denied", fasthttp.StatusForbidden)