mirror of
https://github.com/versity/versitygw.git
synced 2026-01-07 12:15:18 +00:00
fix: fixes tagging string parsing for PutObject, CopyObject and CreateMultipartUpload
Fixes #1215 Fixes #1216 `PutObject`, `CopyObject` and `CreateMultipartUpload` accept tag string as an http request header which should be url-encoded. The tag string should be a valid url-encoded string and each key/value pair should be valid, otherwise they should fail with `APIError`. If the provided tag set contains duplicate `keys` the calls should fail with the same `InvalidURLEncodedTagging` error. Not all url-encoded characters are supported by `S3`. The tagging string should contain only `letters`, `digits` and the following special chars: - `-` - `.` - `/` - `_` - `+` - ` `(space) And their url-encoded versions: e.g. `%2F`(/), `%2E`(.) ... . If the provided tagging string contains invalid `key`/`value`, the calls should fail with the following errors respectively: `invalid key` - `(InvalidTag) The TagKey you have provided is invalid` `invalid value` - `(InvalidTag) The TagValue you have provided is invalid`
This commit is contained in:
@@ -89,6 +89,7 @@ const (
|
||||
ErrDuplicateTagKey
|
||||
ErrBucketTaggingLimited
|
||||
ErrObjectTaggingLimited
|
||||
ErrInvalidURLEncodedTagging
|
||||
ErrAuthHeaderEmpty
|
||||
ErrSignatureVersionNotSupported
|
||||
ErrMalformedPOSTRequest
|
||||
@@ -335,6 +336,11 @@ var errorCodeResponse = map[ErrorCode]APIError{
|
||||
Description: "Object tags cannot be greater than 10",
|
||||
HTTPStatusCode: http.StatusBadRequest,
|
||||
},
|
||||
ErrInvalidURLEncodedTagging: {
|
||||
Code: "InvalidArgument",
|
||||
Description: "The header 'x-amz-tagging' shall be encoded as UTF-8 then URLEncoded URL query parameters without tag name duplicates.",
|
||||
HTTPStatusCode: http.StatusBadRequest,
|
||||
},
|
||||
ErrMalformedXML: {
|
||||
Code: "MalformedXML",
|
||||
Description: "The XML you provided was not well-formed or did not validate against our published schema.",
|
||||
|
||||
Reference in New Issue
Block a user