]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Amend b7621625ed69f21a5bf701b3385ddee281ff3715 to not call url_decode excessively 45430/head
authorPaul Reece <paul@servercloud.com>
Fri, 9 Jul 2021 14:10:55 +0000 (10:10 -0400)
committerCory Snyder <csnyder@iland.com>
Wed, 16 Mar 2022 16:38:09 +0000 (12:38 -0400)
Fixes: #43259
Signed-off-by: Paul Reece <paul@servercloud.com>
(cherry picked from commit c83afb4359b9f8b6d8b6942e74a52f303a474d54)

src/rgw/rgw_op.cc

index 17f7052b3d6c01892a28450686696e2f6944d99f..93d70dda80bbf660db7bf66adba9bf2149708136 100644 (file)
@@ -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;