From aba0027446f6976333dfd0b5729c53722147ab12 Mon Sep 17 00:00:00 2001 From: "Matthew N. Heler" Date: Thu, 5 Mar 2026 19:11:19 -0600 Subject: [PATCH] rgw: require RestoreObject Days >= 1 AWS S3 requires Days to be a positive non-zero integer. Parse Days as a signed integer and validate in get_params() before any restore state is modified, returning InvalidArgument for values less than 1. Signed-off-by: Matthew N. Heler --- src/rgw/rgw_rest_s3.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index a90346b6886a..92821498f8b7 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -3624,7 +3624,7 @@ int RGWPostObj_ObjStore_S3::get_encrypt_filter( } struct RestoreObjectRequest { - std::optional days; + std::optional days; void decode_xml(XMLObj *obj) { RGWXMLDecoder::decode_xml("Days", days, obj); @@ -3673,6 +3673,10 @@ int RGWRestoreObj_ObjStore_S3::get_params(optional_yield y) } if (request.days) { + if (request.days.value() < 1) { + s->err.message = "Days must be a positive integer"; + return -EINVAL; + } expiry_days = request.days.value(); ldpp_dout(this, 10) << "expiry_days=" << expiry_days << dendl; } else { -- 2.47.3