From: yuliyang Date: Sat, 23 Nov 2019 11:49:35 +0000 (+0800) Subject: rgw: fix rgw crash when token is not base64 encode X-Git-Tag: v15.1.0~642^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=b8fca700b52683931052d1567aa259647f977b59;p=ceph-ci.git rgw: fix rgw crash when token is not base64 encode Fixes: https://tracker.ceph.com/issues/43018 Signed-off-by: yuliyang --- diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index e9dca22ae8b..af7245fe808 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -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) {