Fixed back-hdb slapcat EntryInfo cache growth (ITS#4010)
Fixed back-sql missing space in delete statement (ITS#4061)
Fixed liblber sb_dgram_read length (ITS#4046)
- Fixed libldap memory leaks (ITS#4048, 4052, 4053)
+ Fixed libldap memory leaks (ITS#4048, 4052, 4053, 4064)
OpenLDAP 2.2.28 Release
Fixed slapd ACL logging
if ( (saslrc != SASL_OK) && (saslrc != SASL_CONTINUE) ) {
rc = ld->ld_errno = sasl_err2ldap( saslrc );
#if SASL_VERSION_MAJOR >= 2
+ if (ld->ld_error ) {
+ LDAP_FREE( ld->ld_error );
+ }
ld->ld_error = LDAP_STRDUP( sasl_errdetail( ctx ) );
#endif
goto done;
if ( (saslrc != SASL_OK) && (saslrc != SASL_CONTINUE) ) {
ld->ld_errno = sasl_err2ldap( saslrc );
#if SASL_VERSION_MAJOR >= 2
+ if (ld->ld_error ) {
+ LDAP_FREE( ld->ld_error );
+ }
ld->ld_error = LDAP_STRDUP( sasl_errdetail( ctx ) );
#endif
rc = ld->ld_errno;
if ( saslrc != SASL_OK ) {
#if SASL_VERSION_MAJOR >= 2
+ if (ld->ld_error ) {
+ LDAP_FREE( ld->ld_error );
+ }
ld->ld_error = LDAP_STRDUP( sasl_errdetail( ctx ) );
#endif
rc = ld->ld_errno = sasl_err2ldap( saslrc );
if ((err = ERR_peek_error())) {
char buf[256];
+
+ if (ld->ld_error ) {
+ LDAP_FREE( ld->ld_error );
+ }
ld->ld_error = LDAP_STRDUP(ERR_error_string(err, buf));
#ifdef HAVE_EBCDIC
if ( ld->ld_error ) __etoa(ld->ld_error);
"TLS: unable to get common name from peer certificate.\n",
0, 0, 0 );
#endif
- ret = LDAP_CONNECT_ERROR;
+ ret = LDAP_CONNECT_ERROR;
+ if (ld->ld_error ) {
+ LDAP_FREE( ld->ld_error );
+ }
ld->ld_error = LDAP_STRDUP(
_("TLS: unable to get CN from peer certificate"));
if( ret == LDAP_LOCAL_ERROR ) {
#ifdef NEW_LOGGING
- LDAP_LOG ( TRANSPORT, ERR, "ldap_pvt_tls_check_hostname: "
- "TLS hostname (%s) does not match "
- "common name in certificate (%s).\n", name, buf, 0 );
+ LDAP_LOG ( TRANSPORT, ERR, "ldap_pvt_tls_check_hostname: "
+ "TLS hostname (%s) does not match "
+ "common name in certificate (%s).\n", name, buf, 0 );
#else
- Debug( LDAP_DEBUG_ANY, "TLS: hostname (%s) does not match "
- "common name in certificate (%s).\n",
- name, buf, 0 );
+ Debug( LDAP_DEBUG_ANY, "TLS: hostname (%s) does not match "
+ "common name in certificate (%s).\n",
+ name, buf, 0 );
#endif
- ret = LDAP_CONNECT_ERROR;
- ld->ld_error = LDAP_STRDUP(
- _("TLS: hostname does not match CN in peer certificate"));
+ ret = LDAP_CONNECT_ERROR;
+ if (ld->ld_error ) {
+ LDAP_FREE( ld->ld_error );
+ }
+ ld->ld_error = LDAP_STRDUP(
+ _("TLS: hostname does not match CN in peer certificate"));
}
}
X509_free(x);