Commit b74989d2 authored by Kurt Zeilenga's avatar Kurt Zeilenga
Browse files

ITS#4450 fix from HEAD

parent 3ccd4fe7
OpenLDAP 2.3 Change Log
OpenLDAP 2.3.23 Engineering
Fixed slapd-ldap improper free bug (ITS#4450)
OpenLDAP 2.3.22 Release
Fixed libldap referral input destroy issue (ITS#4533)
Fixed libldap ldap_sort_entries tail bug (ITS#4536)
......
......@@ -15,7 +15,7 @@
ol_package=OpenLDAP
ol_major=2
ol_minor=3
ol_patch=22
ol_patch=X
ol_api_inc=20322
ol_api_current=2
ol_api_revision=10
......
......@@ -112,6 +112,7 @@ ldap_back_exop_passwd(
ber_int_t msgid;
int rc, isproxy;
int do_retry = 1;
char *text = NULL;
lc = ldap_back_getconn( op, rs, LDAP_BACK_SENDERR );
if ( !lc || !ldap_back_dobind( lc, op, rs, LDAP_BACK_SENDERR ) ) {
......@@ -140,7 +141,7 @@ retry:
*/
rc = ldap_parse_result( lc->lc_ld, res, &rs->sr_err,
(char **)&rs->sr_matched,
(char **)&rs->sr_text,
&text,
NULL, NULL, 0 );
#ifndef LDAP_NULL_IS_NULL
if ( rs->sr_matched && rs->sr_matched[ 0 ] == '\0' ) {
......@@ -190,6 +191,7 @@ retry:
goto retry;
}
}
if ( text ) rs->sr_text = text;
send_ldap_extended( op, rs );
/* otherwise frontend resends result */
rc = rs->sr_err = SLAPD_ABANDON;
......@@ -201,8 +203,8 @@ retry:
rs->sr_matched = NULL;
}
if ( rs->sr_text ) {
free( (char *)rs->sr_text );
if ( text ) {
free( text );
rs->sr_text = NULL;
}
......@@ -223,6 +225,7 @@ ldap_back_exop_generic(
ber_int_t msgid;
int rc;
int do_retry = 1;
char *text = NULL;
lc = ldap_back_getconn( op, rs, LDAP_BACK_SENDERR );
if ( !lc || !ldap_back_dobind( lc, op, rs, LDAP_BACK_SENDERR ) ) {
......@@ -248,7 +251,7 @@ retry:
*/
rc = ldap_parse_result( lc->lc_ld, res, &rs->sr_err,
(char **)&rs->sr_matched,
(char **)&rs->sr_text,
text,
NULL, NULL, 0 );
#ifndef LDAP_NULL_IS_NULL
if ( rs->sr_matched && rs->sr_matched[ 0 ] == '\0' ) {
......@@ -284,6 +287,7 @@ retry:
goto retry;
}
}
if ( text ) rs->sr_text = text;
send_ldap_extended( op, rs );
/* otherwise frontend resends result */
rc = rs->sr_err = SLAPD_ABANDON;
......@@ -295,8 +299,8 @@ retry:
rs->sr_matched = NULL;
}
if ( rs->sr_text ) {
free( (char *)rs->sr_text );
if ( text ) {
free( text );
rs->sr_text = NULL;
}
......
......@@ -375,16 +375,19 @@ retry:
}
} else {
char **references = NULL;
char **references = NULL, *err = NULL;
rc = ldap_parse_result( lc->lc_ld, res, &rs->sr_err,
&match.bv_val, (char **)&rs->sr_text,
&match.bv_val, &err,
&references, &rs->sr_ctrls, 1 );
freetext = 1;
if ( rc != LDAP_SUCCESS ) {
rs->sr_err = rc;
}
rs->sr_err = slap_map_api2result( rs );
if ( err ) {
rs->sr_text = err;
freetext = 1;
}
if ( references && references[ 0 ] && references[ 0 ][ 0 ] ) {
int cnt;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment