m_ldapoper Fix memory leak

See 1813369adecc1efc9812e90c40c21dc32e4965c9 for details
This commit is contained in:
attilamolnar 2013-03-11 19:53:54 +01:00
parent 4e9cfa5b3a
commit c2549b0402

View File

@ -35,6 +35,31 @@
/* $ModDesc: Adds the ability to authenticate opers via LDAP */
/* $LinkerFlags: -lldap */
struct RAIILDAPString
{
char *str;
RAIILDAPString(char *Str)
: str(Str)
{
}
~RAIILDAPString()
{
ldap_memfree(str);
}
operator char*()
{
return str;
}
operator std::string()
{
return str;
}
};
class ModuleLDAPAuth : public Module
{
std::string base;
@ -165,7 +190,8 @@ public:
authpass = strdup(opassword.c_str());
cred.bv_val = authpass;
cred.bv_len = opassword.length();
if ((res = ldap_sasl_bind_s(conn, ldap_get_dn(conn, entry), LDAP_SASL_SIMPLE, &cred, NULL, NULL, NULL)) == LDAP_SUCCESS)
RAIILDAPString DN(ldap_get_dn(conn, entry));
if ((res = ldap_sasl_bind_s(conn, DN, LDAP_SASL_SIMPLE, &cred, NULL, NULL, NULL)) == LDAP_SUCCESS)
{
free(authpass);
ldap_msgfree(msg);