From b8fca700b52683931052d1567aa259647f977b59 Mon Sep 17 00:00:00 2001 From: yuliyang Date: Sat, 23 Nov 2019 19:49:35 +0800 Subject: [PATCH] rgw: fix rgw crash when token is not base64 encode Fixes: https://tracker.ceph.com/issues/43018 Signed-off-by: yuliyang --- src/rgw/rgw_rest_s3.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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) { -- 2.39.5