From 823c497465dd887d069f27e334bebbca5a3eaaaf Mon Sep 17 00:00:00 2001 From: yuliyang Date: Tue, 10 Dec 2019 16:12:57 +0800 Subject: [PATCH] rgw: fix rgw crash when token is not base64 encode Fixes: https://tracker.ceph.com/issues/43018 Signed-off-by: yuliyang (cherry picked from commit b8fca700b52683931052d1567aa259647f977b59) 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 0a28abaeb455..53f93bb9e73d 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -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) { -- 2.47.3