aboutsummaryrefslogtreecommitdiff
path: root/src/modules/m_ldapauth.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/m_ldapauth.cpp')
-rw-r--r--src/modules/m_ldapauth.cpp16
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;