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: v15.2.17~84^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=107eb0bcc0b5db3097d695e1b44bbb40c8c39e07;p=ceph.git Amend b7621625ed69f21a5bf701b3385ddee281ff3715 to not call url_decode excessively Fixes: #43259 Signed-off-by: Paul Reece (cherry picked from commit c83afb4359b9f8b6d8b6942e74a52f303a474d54) Conflicts: src/rgw/rgw_op.cc --- diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 9b983d0c938..ae70176e004 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -5003,16 +5003,17 @@ bool RGWCopyObj::parse_copy_location(const boost::string_view& url_src, params_str = url_src.substr(pos + 1); } - boost::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;