diff options
Diffstat (limited to 'src/modules/m_ldapauth.cpp')
| -rw-r--r-- | src/modules/m_ldapauth.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/modules/m_ldapauth.cpp b/src/modules/m_ldapauth.cpp index 00ac7a280..1f92f8819 100644 --- a/src/modules/m_ldapauth.cpp +++ b/src/modules/m_ldapauth.cpp @@ -275,10 +275,10 @@ class AdminBindInterface final const std::string provider; const std::string uuid; const std::string base; - const std::string what; + const LDAPAttribute what; public: - AdminBindInterface(Module* c, const std::string& p, const std::string& u, const std::string& b, const std::string& w) + AdminBindInterface(Module* c, const std::string& p, const std::string& u, const std::string& b, const LDAPAttribute& w) : LDAPInterface(c) , provider(p) , uuid(u) @@ -294,7 +294,8 @@ public: { try { - LDAP->Search(new SearchInterface(this->creator, provider, uuid), base, what); + const auto sf = INSP_FORMAT("{}={}", what.first, LDAP->EscapeSF(what.second)); + LDAP->Search(new SearchInterface(this->creator, provider, uuid), base, sf); } catch (const LDAPException& ex) { @@ -428,15 +429,16 @@ public: return MOD_RES_DENY; } - std::string what = attribute + "="; + LDAPAttribute what; + what.first = attribute; switch (field) { case AuthField::NICKNAME: - what += user->nick; + what.second = user->nick; break; case AuthField::USERNAME: - what += user->GetRealUser(); + what.second = user->GetRealUser(); break; case AuthField::PASSWORD: @@ -450,7 +452,7 @@ public: return MOD_RES_DENY; } - what += user->password.substr(0, pos); + what.second = user->password.substr(0, pos); user->password.erase(0, pos + 1); user->password.shrink_to_fit(); break; |
