From 3ebb426abea86e2a17a0f101fff9212bf4a444e9 Mon Sep 17 00:00:00 2001 From: yanglongwei Date: Wed, 12 Aug 2026 15:43:03 +0800 Subject: [PATCH] fix(s3): return InvalidArgument for mismatched ListMultipartUploads key-marker (#5914) A key-marker that does not start with the request prefix is invalid input, not an unimplemented feature. Co-authored-by: Cursor Co-authored-by: houseme --- rustfs/src/app/multipart_usecase.rs | 2 +- rustfs/src/storage/s3_api/multipart.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rustfs/src/app/multipart_usecase.rs b/rustfs/src/app/multipart_usecase.rs index 865b93412..6d1af3dfe 100644 --- a/rustfs/src/app/multipart_usecase.rs +++ b/rustfs/src/app/multipart_usecase.rs @@ -2355,7 +2355,7 @@ mod tests { let req = build_request(input, Method::GET); let err = make_usecase().execute_list_multipart_uploads(req).await.unwrap_err(); - assert_eq!(err.code(), &S3ErrorCode::NotImplemented); + assert_eq!(err.code(), &S3ErrorCode::InvalidArgument); assert_eq!(err.message(), Some("Invalid key marker")); } diff --git a/rustfs/src/storage/s3_api/multipart.rs b/rustfs/src/storage/s3_api/multipart.rs index d74997b8b..ffc1a4692 100644 --- a/rustfs/src/storage/s3_api/multipart.rs +++ b/rustfs/src/storage/s3_api/multipart.rs @@ -140,7 +140,7 @@ pub(crate) fn parse_list_multipart_uploads_params( if let Some(key_marker) = &key_marker && !key_marker.starts_with(prefix.as_str()) { - return Err(S3Error::with_message(S3ErrorCode::NotImplemented, "Invalid key marker".to_string())); + return Err(S3Error::with_message(S3ErrorCode::InvalidArgument, "Invalid key marker".to_string())); } Ok(ListMultipartUploadsParams { @@ -390,7 +390,7 @@ mod tests { let err = parse_list_multipart_uploads_params(Some("prefix/".to_string()), Some("other/key-marker".to_string()), None) .expect_err("expected invalid key marker"); - assert_eq!(*err.code(), S3ErrorCode::NotImplemented); + assert_eq!(*err.code(), S3ErrorCode::InvalidArgument); assert_eq!(err.message(), Some("Invalid key marker")); }