Skip to content
Snippets Groups Projects
Commit 0e6f61aa authored by Pierangelo Masarati's avatar Pierangelo Masarati
Browse files

fix leaks in ldap_parse_passwd()

parent a119fe3d
No related branches found
No related tags found
No related merge requests found
......@@ -36,8 +36,7 @@ int ldap_parse_passwd(
struct berval *newpasswd )
{
int rc;
char *retoid = NULL;
struct berval *retdata;
struct berval *retdata = NULL;
assert( ld != NULL );
assert( LDAP_VALID( ld ) );
......@@ -47,31 +46,32 @@ int ldap_parse_passwd(
newpasswd->bv_val = NULL;
newpasswd->bv_len = 0;
rc = ldap_parse_extended_result( ld, res, &retoid, &retdata, 0 );
if( rc != LDAP_SUCCESS ) {
rc = ldap_parse_extended_result( ld, res, NULL, &retdata, 0 );
if ( rc != LDAP_SUCCESS ) {
return rc;
}
if( retdata != NULL ) {
if ( retdata != NULL ) {
ber_tag_t tag;
BerElement *ber = ber_init( retdata );
if( ber == NULL ) {
ld->ld_errno = LDAP_NO_MEMORY;
return ld->ld_errno;
if ( ber == NULL ) {
rc = ld->ld_errno = LDAP_NO_MEMORY;
goto done;
}
/* we should check the tag */
tag = ber_scanf( ber, "{o}", newpasswd );
ber_free( ber, 1 );
if( tag == LBER_ERROR ) {
if ( tag == LBER_ERROR ) {
rc = ld->ld_errno = LDAP_DECODING_ERROR;
}
}
ber_memfree( retoid );
done:;
ber_bvfree( retdata );
return rc;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment