Files
seaweedfs/weed/s3api
Chris LuandDevin 5fdb061c99 s3: pin object-lock actions so request shape cannot re-derive them
ResolveS3Action derives the authorized action from the request's
method+query, overriding the caller's base action. A governance-bypass
check on DELETE ?versionId=... therefore evaluated s3:DeleteObjectVersion
instead of s3:BypassGovernanceRetention, letting an identity that holds
version-delete but not bypass delete a GOVERNANCE-locked version
(GHSA-j4hf-8r83-7fjj). The same substitution let s3:GetObjectVersion
satisfy GetObjectRetention/GetObjectLegalHold on ?versionId requests,
and silently dropped bucket-policy grants of the bypass action on
versioned deletes.

Object Lock actions name a concrete permission checked on top of another
operation's shape; resolve them to themselves, like iam:/sts: actions.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-26 05:00:23 -07:00
..
2026-01-28 14:34:07 -08:00
2024-07-04 11:00:41 -07:00
2026-08-24 18:39:30 -07:00

see https://blog.aqwari.net/xml-schema-go/

1. go get aqwari.net/xml/cmd/xsdgen
2. Add EncodingType element for ListBucketResult in AmazonS3.xsd
3. xsdgen -o s3api_xsd_generated.go -pkg s3api AmazonS3.xsd
4. Remove empty Grantee struct in s3api_xsd_generated.go
5. Remove xmlns: sed s'/http:\/\/s3.amazonaws.com\/doc\/2006-03-01\/\ //' s3api_xsd_generated.go