From: Radoslaw Zarzynski Date: Wed, 23 Aug 2017 19:31:11 +0000 (+0200) Subject: rgw: fix accessing expired memory in PrefixableSignatureHelper. X-Git-Tag: v13.0.1~1109^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9260d39ceb1ef39a32c8f1742c3069bb83d628f8;p=ceph.git rgw: fix accessing expired memory in PrefixableSignatureHelper. Fixes: http://tracker.ceph.com/issues/21085 Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/rgw/rgw_swift_auth.cc b/src/rgw/rgw_swift_auth.cc index 525671c34b4a..15dfe032b3aa 100644 --- a/src/rgw/rgw_swift_auth.cc +++ b/src/rgw/rgw_swift_auth.cc @@ -203,13 +203,17 @@ class TempURLEngine::PrefixableSignatureHelper const boost::optional prefix; public: - PrefixableSignatureHelper(const std::string& decoded_uri, + PrefixableSignatureHelper(const std::string& _decoded_uri, const std::string& object_name, const boost::optional prefix) - : decoded_uri(decoded_uri), + : decoded_uri(_decoded_uri), object_name(object_name), prefix(prefix) { - /* Transform: v1/acct/cont/obj - > v1/acct/cont/ */ + /* Transform: v1/acct/cont/obj - > v1/acct/cont/ + * + * NOTE(rzarzynski): we really want to substr() on boost::string_view, + * not std::string. Otherwise we would end with no_obj_uri referencing + * a temporary. */ no_obj_uri = \ decoded_uri.substr(0, decoded_uri.length() - object_name.length()); }