From c6cbd82f8be819c3cb334eb0f42f684f687824c4 Mon Sep 17 00:00:00 2001 From: Ben McClelland Date: Wed, 13 Dec 2023 15:33:18 -0800 Subject: [PATCH] fix: Fixes 330, Fixes 334, Fixed copySrcModifSince bug in CopyObject action commit 48d951edfe25a8fb90810bf60f93d5b29d691dbb Author: jonaustin09 Date: Wed Dec 13 09:06:44 2023 -0500 --- s3api/controllers/base.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/s3api/controllers/base.go b/s3api/controllers/base.go index f158d287..01766643 100644 --- a/s3api/controllers/base.go +++ b/s3api/controllers/base.go @@ -595,20 +595,21 @@ func (c S3ApiController) PutActions(ctx *fiber.Ctx) error { return SendXMLResponse(ctx, nil, err, &MetaOpts{Logger: c.logger, Action: "CopyObject", BucketOwner: parsedAcl.Owner}) } - var mtime time.Time - var err error + var mtime *time.Time + var umtime *time.Time if copySrcModifSince != "" { - mtime, err = time.Parse(iso8601Format, copySrcModifSince) + tm, err := time.Parse(iso8601Format, copySrcModifSince) if err != nil { return SendXMLResponse(ctx, nil, s3err.GetAPIError(s3err.ErrInvalidCopySource), &MetaOpts{Logger: c.logger, Action: "CopyObject", BucketOwner: parsedAcl.Owner}) } + mtime = &tm } - var umtime time.Time - if copySrcModifSince != "" { - mtime, err = time.Parse(iso8601Format, copySrcUnmodifSince) + if copySrcUnmodifSince != "" { + tm, err := time.Parse(iso8601Format, copySrcUnmodifSince) if err != nil { return SendXMLResponse(ctx, nil, s3err.GetAPIError(s3err.ErrInvalidCopySource), &MetaOpts{Logger: c.logger, Action: "CopyObject", BucketOwner: parsedAcl.Owner}) } + umtime = &tm } metadata := utils.GetUserMetaData(&ctx.Request().Header) @@ -619,8 +620,8 @@ func (c S3ApiController) PutActions(ctx *fiber.Ctx) error { CopySource: ©Source, CopySourceIfMatch: ©SrcIfMatch, CopySourceIfNoneMatch: ©SrcIfNoneMatch, - CopySourceIfModifiedSince: &mtime, - CopySourceIfUnmodifiedSince: &umtime, + CopySourceIfModifiedSince: mtime, + CopySourceIfUnmodifiedSince: umtime, ExpectedBucketOwner: &acct.Access, Metadata: metadata, })