mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-04-18 15:20:35 +08:00
Fix ldap_get_attribute_ber to get values in-place.
Revert previous memleak fix in ldapsearch.c
This commit is contained in:
parent
ac7ac5acef
commit
8e8fbe0908
@ -1367,7 +1367,7 @@ print_entry(
|
||||
bvals[ i ].bv_val, bvals[ i ].bv_len );
|
||||
}
|
||||
}
|
||||
ber_bvarray_free( bvals );
|
||||
ber_memfree( bvals );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -121,7 +121,10 @@ ldap_next_attribute( LDAP *ld, LDAPMessage *entry, BerElement *ber )
|
||||
return attr;
|
||||
}
|
||||
|
||||
/* Fetch attribute type and optionally fetch values */
|
||||
/* Fetch attribute type and optionally fetch values. The type
|
||||
* and values are referenced in-place from the BerElement, they are
|
||||
* not dup'd into malloc'd memory.
|
||||
*/
|
||||
/* ARGSUSED */
|
||||
int
|
||||
ldap_get_attribute_ber( LDAP *ld, LDAPMessage *entry, BerElement *ber,
|
||||
@ -146,8 +149,11 @@ ldap_get_attribute_ber( LDAP *ld, LDAPMessage *entry, BerElement *ber,
|
||||
attr->bv_len = 0;
|
||||
|
||||
if ( ber_pvt_ber_remaining( ber ) ) {
|
||||
ber_len_t siz = sizeof( BerValue );
|
||||
|
||||
/* skip sequence, snarf attribute type */
|
||||
tag = ber_scanf( ber, vals ? "{mW}" : "{mx}", attr, vals );
|
||||
tag = ber_scanf( ber, vals ? "{mM}" : "{mx}", attr, vals,
|
||||
&siz, 0 );
|
||||
if( tag == LBER_ERROR ) {
|
||||
rc = ld->ld_errno = LDAP_DECODING_ERROR;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user