From 20d00f7f6d01d904f84cbce9865511b7765ea1a5 Mon Sep 17 00:00:00 2001 From: niksis02 Date: Tue, 8 Apr 2025 19:01:00 +0400 Subject: [PATCH] fix: Changes the error type to MalformedXML for PutObjectRetention and PutObjectLegalHold empty or invalid body Fixes #1185 Fixes #1191 `PutObjectLegalHold` and `PutObjectRetention` should return `MalformedXML` if the request body is empty or invalid.` --- auth/object_lock.go | 2 +- s3api/controllers/base.go | 2 +- tests/integration/tests.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/auth/object_lock.go b/auth/object_lock.go index 8abfa8d..5a38846 100644 --- a/auth/object_lock.go +++ b/auth/object_lock.go @@ -95,7 +95,7 @@ func ParseBucketLockConfigurationOutput(input []byte) (*types.ObjectLockConfigur func ParseObjectLockRetentionInput(input []byte) ([]byte, error) { var retention s3response.PutObjectRetentionInput if err := xml.Unmarshal(input, &retention); err != nil { - return nil, s3err.GetAPIError(s3err.ErrInvalidRequest) + return nil, s3err.GetAPIError(s3err.ErrMalformedXML) } if retention.RetainUntilDate.Before(time.Now()) { diff --git a/s3api/controllers/base.go b/s3api/controllers/base.go index f97245b..429086f 100644 --- a/s3api/controllers/base.go +++ b/s3api/controllers/base.go @@ -1969,7 +1969,7 @@ func (c S3ApiController) PutActions(ctx *fiber.Ctx) error { if ctx.Request().URI().QueryArgs().Has("legal-hold") { var legalHold types.ObjectLockLegalHold if err := xml.Unmarshal(ctx.Body(), &legalHold); err != nil { - return SendResponse(ctx, s3err.GetAPIError(s3err.ErrInvalidRequest), + return SendResponse(ctx, s3err.GetAPIError(s3err.ErrMalformedXML), &MetaOpts{ Logger: c.logger, MetricsMng: c.mm, diff --git a/tests/integration/tests.go b/tests/integration/tests.go index d456885..3bd8a85 100644 --- a/tests/integration/tests.go +++ b/tests/integration/tests.go @@ -13173,7 +13173,7 @@ func PutObjectLegalHold_invalid_body(s *S3Conf) error { Key: getPtr("my-obj"), }) cancel() - if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrInvalidRequest)); err != nil { + if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrMalformedXML)); err != nil { return err }