From: Pierangelo Masarati Date: Thu, 3 Nov 2005 11:58:06 +0000 (+0000) Subject: don't leak text/matched X-Git-Tag: OPENLDAP_REL_ENG_2_2_MP~125 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=2a24cbb5e8bb84a0bf6bef0e022f264fc565b8f2;p=openldap don't leak text/matched --- diff --git a/servers/slapd/back-ldap/extended.c b/servers/slapd/back-ldap/extended.c index 92ebf50034..7218af2e84 100644 --- a/servers/slapd/back-ldap/extended.c +++ b/servers/slapd/back-ldap/extended.c @@ -135,6 +135,12 @@ retry: (char **)&rs->sr_matched, (char **)&rs->sr_text, NULL, NULL, 0 ); + if ( rs->sr_matched && rs->sr_matched[ 0 ] == '\0' ) { + free( (char *)rs->sr_matched ); + } + if ( rs->sr_text && rs->sr_text[ 0 ] == '\0' ) { + free( (char *)rs->sr_text ); + } if ( rc == LDAP_SUCCESS ) { if ( rs->sr_err == LDAP_SUCCESS ) { struct berval newpw; @@ -165,17 +171,19 @@ retry: } } send_ldap_result( op, rs ); - if ( rs->sr_matched ) { - free( (char *)rs->sr_matched ); - } - if ( rs->sr_text ) { - free( (char *)rs->sr_text ); - } - rs->sr_matched = NULL; - rs->sr_text = NULL; rc = -1; } + /* these have to be freed anyway... */ + if ( rs->sr_matched ) { + free( (char *)rs->sr_matched ); + } + if ( rs->sr_text ) { + free( (char *)rs->sr_text ); + } + rs->sr_matched = NULL; + rs->sr_text = NULL; + if ( lc != NULL ) { ldap_back_release_conn( op, rs, lc ); }