From: Matthew N. Heler Date: Fri, 6 Mar 2026 01:11:19 +0000 (-0600) Subject: rgw: require RestoreObject Days >= 1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=aba0027446f6976333dfd0b5729c53722147ab12;p=ceph.git 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 --- 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 {