From 97e6c9dac7ca9050d7b16ac160120acbe6ddc33c Mon Sep 17 00:00:00 2001 From: Matt Benjamin Date: Fri, 4 Jan 2019 16:25:16 -0500 Subject: [PATCH] rgw ldap: move conditional LDAPEngine init into it's ctor rgw::auth::ExternalAuthStrategy defines an LDAPEngine in a ctor-initializer list, making it too late to conditionally initialize -it- in ExternalAuthStrategy's ctor. Fixes: https://tracker.ceph.com/issues/24228 Signed-off-by: Matt Benjamin --- src/rgw/rgw_auth_s3.h | 3 +-- src/rgw/rgw_rest_s3.cc | 10 ++++++++++ src/rgw/rgw_rest_s3.h | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/rgw/rgw_auth_s3.h b/src/rgw/rgw_auth_s3.h index d848d91713620..43fbbb52e3af5 100644 --- a/src/rgw/rgw_auth_s3.h +++ b/src/rgw/rgw_auth_s3.h @@ -133,8 +133,7 @@ public: } - if (cct->_conf->rgw_s3_auth_use_ldap && - ! cct->_conf->rgw_ldap_uri.empty()) { + if (ldap_engine.valid()) { add_engine(Control::SUFFICIENT, ldap_engine); } } diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index ed3a819af094e..9757b1d11dd3b 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -4214,6 +4214,11 @@ std::mutex rgw::auth::s3::LDAPEngine::mtx; void rgw::auth::s3::LDAPEngine::init(CephContext* const cct) { + if (! cct->_conf->rgw_s3_auth_use_ldap || + ! cct->_conf->rgw_ldap_uri.empty()) { + return; + } + if (! ldh) { std::lock_guard lck(mtx); if (! ldh) { @@ -4233,6 +4238,11 @@ void rgw::auth::s3::LDAPEngine::init(CephContext* const cct) } } +bool rgw::auth::s3::LDAPEngine::valid() { + std::lock_guard lck(mtx); + return (!!ldh); +} + rgw::auth::RemoteApplier::acl_strategy_t rgw::auth::s3::LDAPEngine::get_acl_strategy() const { diff --git a/src/rgw/rgw_rest_s3.h b/src/rgw/rgw_rest_s3.h index c425f97c7f3c0..feec1d9d17267 100644 --- a/src/rgw/rgw_rest_s3.h +++ b/src/rgw/rgw_rest_s3.h @@ -856,6 +856,7 @@ public: return "rgw::auth::s3::LDAPEngine"; } + static bool valid(); static void shutdown(); }; -- 2.39.5