]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix rgw crash when token is not base64 encode 32050/head
authoryuliyang <yuliyang@cmss.chinamobile.com>
Tue, 10 Dec 2019 08:12:57 +0000 (16:12 +0800)
committeryuliyang <yuliyang@cmss.chinamobile.com>
Tue, 10 Dec 2019 08:12:57 +0000 (16:12 +0800)
Fixes: https://tracker.ceph.com/issues/43018
Signed-off-by: yuliyang <yuliyang@cmss.chinamobile.com>
(cherry picked from commit b8fca700b52683931052d1567aa259647f977b59)
Signed-off-by: yuliyang <yuliyang@cmss.chinamobile.com>
src/rgw/rgw_rest_s3.cc

index 0a28abaeb455606a9df3a4e656ccaa4efa5ffdef..53f93bb9e73d9ee43371534fc53824735d983482 100644 (file)
@@ -4922,7 +4922,13 @@ int
 rgw::auth::s3::STSEngine::get_session_token(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 (...) {
+    ldout(cct, 0) << "ERROR: Invalid session token, not base64 encoded." << dendl;
+    return -EINVAL;
+  }
 
   auto* cryptohandler = cct->get_crypto_handler(CEPH_CRYPTO_AES);
   if (! cryptohandler) {