From a1bcf497efe1eaffe1e86005168235b6c57b128b Mon Sep 17 00:00:00 2001 From: Paul Reece Date: Fri, 9 Jul 2021 10:10:55 -0400 Subject: [PATCH] Amend b7621625ed69f21a5bf701b3385ddee281ff3715 to not call url_decode excessively Fixes: #43259 Signed-off-by: Paul Reece (cherry picked from commit c83afb4359b9f8b6d8b6942e74a52f303a474d54) --- src/rgw/rgw_op.cc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 17f7052b3d6..93d70dda80b 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -4974,16 +4974,17 @@ bool RGWCopyObj::parse_copy_location(const std::string_view& url_src, params_str = url_src.substr(pos + 1); } - std::string_view dec_src{name_str}; - if (dec_src[0] == '/') - dec_src.remove_prefix(1); + if (name_str[0] == '/') // trim leading slash + name_str.remove_prefix(1); - pos = url_decode(dec_src).find('/'); + std::string dec_src = url_decode(name_str); + + pos = dec_src.find('/'); if (pos == string::npos) return false; - bucket_name = url_decode(dec_src).substr(0, pos); - key.name = url_decode(dec_src).substr(pos + 1); + bucket_name = dec_src.substr(0, pos); + key.name = dec_src.substr(pos + 1); if (key.name.empty()) { return false; -- 2.47.3