From: Paul Reece Date: Fri, 9 Jul 2021 14:10:55 +0000 (-0400) Subject: Amend b7621625ed69f21a5bf701b3385ddee281ff3715 to not call url_decode excessively X-Git-Tag: v16.2.8~97^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F45430%2Fhead;p=ceph.git Amend b7621625ed69f21a5bf701b3385ddee281ff3715 to not call url_decode excessively Fixes: #43259 Signed-off-by: Paul Reece (cherry picked from commit c83afb4359b9f8b6d8b6942e74a52f303a474d54) --- 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;