From bf3ee8b22bf1c2242189107cc662a28f5ea7c219 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Thu, 25 Jan 2018 12:09:20 -0500 Subject: [PATCH] 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) --- src/rgw/rgw_asio_client.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/rgw/rgw_asio_client.cc b/src/rgw/rgw_asio_client.cc index 13476b6e14b89..fd36719e47768 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]; -- 2.39.5