fix: reject start-after in ListObjects V1

listobjects v1 now returns InvalidArgument when the start-after query parameter is present, matching s3, which only accepts it with list-type=2. previously the parameter was silently ignored.

Fixes #2004
This commit is contained in:
dualfroz committed 2026-10-07 19:38:54 +02:00
1 parent 09e1b65724
commit b3bf48bdcb
6 files changed
+67 -3

No files matched your search

+13
View File
@@ -21,7 +21,9 @@ import (
"github.com/aws/aws-sdk-go-v2/service/s3/types"
"github.com/gofiber/fiber/v3"
"github.com/versity/versitygw/auth"
"github.com/versity/versitygw/debuglogger"
"github.com/versity/versitygw/s3api/utils"
"github.com/versity/versitygw/s3err"
"github.com/versity/versitygw/s3response"
)
@@ -631,6 +633,17 @@ func (c S3ApiController) ListObjects(ctx fiber.Ctx) (*Response, error) {
}, err
}
// start-after belongs to list-type=2 only; S3 rejects it here instead of
// ignoring it
if ctx.Request().URI().QueryArgs().Has("start-after") {
debuglogger.Logf("start-after is not supported in ListObjects V1")
return &Response{
MetaOpts: &MetaOptions{
BucketOwner: parsedAcl.Owner,
},
}, s3err.GetInvalidArgumentErr(s3err.InvalidArgStartAfter, "")
}
maxkeys, err := utils.ParseMaxLimiter(maxkeysStr, utils.LimiterTypeMaxKeys)
if err != nil {
return &Response{