From d742b5c9ce4d3e36a8d27ff7ffa9fdb8446abb9c Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Tue, 6 Oct 2026 08:53:54 -0700 Subject: [PATCH] s3api: InvalidArgument for non-numeric or out-of-range part numbers partNumber=abc, 0 and >10000 all resolve to InvalidArgument, matching AWS, instead of InvalidPart. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- weed/s3api/s3api_object_handlers_multipart.go | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/weed/s3api/s3api_object_handlers_multipart.go b/weed/s3api/s3api_object_handlers_multipart.go index d665392368..4ed8c2f5c7 100644 --- a/weed/s3api/s3api_object_handlers_multipart.go +++ b/weed/s3api/s3api_object_handlers_multipart.go @@ -356,16 +356,8 @@ func (s3a *S3ApiServer) PutObjectPartHandler(w http.ResponseWriter, r *http.Requ partIDString := r.URL.Query().Get("partNumber") partID, err := strconv.Atoi(partIDString) - if err != nil { - s3err.WriteErrorResponse(w, r, s3err.ErrInvalidPart) - return - } - if partID > s3_constants.MaxS3MultipartParts { - s3err.WriteErrorResponse(w, r, s3err.ErrInvalidPart) - return - } - if partID < 1 { - s3err.WriteErrorResponse(w, r, s3err.ErrInvalidPart) + if err != nil || partID < 1 || partID > s3_constants.MaxS3MultipartParts { + s3err.WriteErrorResponse(w, r, s3err.ErrInvalidArgument) return }