From: Casey Bodley Date: Thu, 25 Jan 2018 17:09:20 +0000 (-0500) Subject: rgw: fix for empty query string in beast frontend X-Git-Tag: v12.2.3~9^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bf3ee8b22bf1c2242189107cc662a28f5ea7c219;p=ceph.git rgw: fix for empty query string in beast frontend when the target does not contain a ?, the QUERY_STRING was being set to the same value as REQUEST_URI. this QUERY_STRING is included in the signature, and caused SignatureDoesNotMatch failures Fixes: http://tracker.ceph.com/issues/22797 Signed-off-by: Casey Bodley (cherry picked from commit ab9e79684ac7ae33b78522df6732b99271d10016) --- diff --git a/src/rgw/rgw_asio_client.cc b/src/rgw/rgw_asio_client.cc index 13476b6e14b8..fd36719e4776 100644 --- a/src/rgw/rgw_asio_client.cc +++ b/src/rgw/rgw_asio_client.cc @@ -65,11 +65,12 @@ void ClientIO::init_env(CephContext *cct) // split uri from query auto url = request.target(); auto pos = url.find('?'); - auto query = url.substr(pos + 1); - url = url.substr(0, pos); - + if (pos != url.npos) { + auto query = url.substr(pos + 1); + env.set("QUERY_STRING", query.to_string()); + url = url.substr(0, pos); + } env.set("REQUEST_URI", url.to_string()); - env.set("QUERY_STRING", query.to_string()); env.set("SCRIPT_URI", url.to_string()); /* FIXME */ char port_buf[16];