]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: fix rgw crash when token is not base64 encode
authoryuliyang <yuliyang@cmss.chinamobile.com>
Sat, 23 Nov 2019 11:49:35 +0000 (19:49 +0800)
committeryuliyang <yuliyang@cmss.chinamobile.com>
Tue, 26 Nov 2019 06:02:42 +0000 (14:02 +0800)
Fixes: https://tracker.ceph.com/issues/43018
Signed-off-by: yuliyang <yuliyang@cmss.chinamobile.com>
src/rgw/rgw_rest_s3.cc

index e9dca22ae8b724a41639870404cb316e240017e9..af7245fe808e71b66ff9910df934741a1284210d 100644 (file)
@@ -5046,7 +5046,13 @@ int
 rgw::auth::s3::STSEngine::get_session_token(const DoutPrefixProvider* dpp, const boost::string_view& session_token,
                                             STS::SessionToken& token) const
 {
-  string decodedSessionToken = rgw::from_base64(session_token);
+  string decodedSessionToken;
+  try {
+    decodedSessionToken = rgw::from_base64(session_token);
+  } catch (...) {
+    ldpp_dout(dpp, 0) << "ERROR: Invalid session token, not base64 encoded." << dendl;
+    return -EINVAL;
+  }
 
   auto* cryptohandler = cct->get_crypto_handler(CEPH_CRYPTO_AES);
   if (! cryptohandler) {