From b2462337c4096427611f724874e5b24bff79a5d4 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Fri, 18 Oct 2024 13:46:38 -0400 Subject: [PATCH] rgw: GetObjAttrs enforces MaxSize and returns correct IsTruncated Signed-off-by: Casey Bodley --- src/rgw/driver/rados/rgw_sal_rados.cc | 6 ++++++ src/rgw/rgw_op.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/rgw/driver/rados/rgw_sal_rados.cc b/src/rgw/driver/rados/rgw_sal_rados.cc index 49ad4bb3bb217..24f44c94f3793 100644 --- a/src/rgw/driver/rados/rgw_sal_rados.cc +++ b/src/rgw/driver/rados/rgw_sal_rados.cc @@ -2527,6 +2527,11 @@ int RadosObject::list_parts(const DoutPrefixProvider* dpp, CephContext* cct, continue; } + if (max_parts < 1) { + *truncated = true; + break; + } + /* get_part_obj_state alters the passed manifest** to point to a part * manifest, which we don't want to leak out here */ RGWObjManifest* obj_m = manifest; @@ -2563,6 +2568,7 @@ int RadosObject::list_parts(const DoutPrefixProvider* dpp, CephContext* cct, each_func(obj_part); *next_marker = ++marker; + --max_parts; } /* each part */ return ret; diff --git a/src/rgw/rgw_op.h b/src/rgw/rgw_op.h index dfc2b914b5b56..d3980bc718315 100644 --- a/src/rgw/rgw_op.h +++ b/src/rgw/rgw_op.h @@ -1651,7 +1651,7 @@ protected: std::string version_id; std::string expected_bucket_owner; int marker{0}; - int max_parts{0}; + int max_parts{1000}; uint16_t requested_attributes{0}; #if 0 /* used to decrypt attributes for objects stored with SSE-C */ -- 2.39.5