mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-01-09 00:14:25 -05:00
fix leaks in ldap_parse_passwd()
This commit is contained in:
parent
a119fe3df0
commit
0e6f61aa03
1 changed files with 11 additions and 11 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue