From 8fa2b58f8eb68e8690d983df6094cffc97305f7e Mon Sep 17 00:00:00 2001 From: jonaustin09 Date: Tue, 11 Jun 2024 16:37:56 -0400 Subject: [PATCH] fix: fixed RestoreObject action request body parsing --- s3api/controllers/base.go | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/s3api/controllers/base.go b/s3api/controllers/base.go index 361b1782..e4bea924 100644 --- a/s3api/controllers/base.go +++ b/s3api/controllers/base.go @@ -2549,6 +2549,18 @@ func (c S3ApiController) CreateActions(ctx *fiber.Ctx) error { } if ctx.Request().URI().QueryArgs().Has("restore") { + var restoreRequest types.RestoreRequest + if err := xml.Unmarshal(ctx.Body(), &restoreRequest); err != nil { + if !errors.Is(io.EOF, err) { + return SendResponse(ctx, s3err.GetAPIError(s3err.ErrMalformedXML), + &MetaOpts{ + Logger: c.logger, + MetricsMng: c.mm, + Action: metrics.ActionRestoreObject, + BucketOwner: parsedAcl.Owner, + }) + } + } err := auth.VerifyAccess(ctx.Context(), c.be, auth.AccessOptions{ Readonly: c.readonly, @@ -2570,12 +2582,11 @@ func (c S3ApiController) CreateActions(ctx *fiber.Ctx) error { }) } - restoreRequest := s3.RestoreObjectInput{ - Bucket: &bucket, - Key: &key, - } - - err = c.be.RestoreObject(ctx.Context(), &restoreRequest) + err = c.be.RestoreObject(ctx.Context(), &s3.RestoreObjectInput{ + Bucket: &bucket, + Key: &key, + RestoreRequest: &restoreRequest, + }) return SendResponse(ctx, err, &MetaOpts{ Logger: c.logger,