mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-20 22:59:34 -05:00
ITS#8733 Allow extraction of the complete ber element
This commit is contained in:
parent
6aa6daf2f0
commit
62811e8f65
2 changed files with 24 additions and 0 deletions
|
|
@ -255,6 +255,11 @@ ber_peek_tag LDAP_P((
|
|||
BerElement *ber,
|
||||
ber_len_t *len ));
|
||||
|
||||
LBER_F( ber_tag_t )
|
||||
ber_skip_raw LDAP_P((
|
||||
BerElement *ber,
|
||||
struct berval *bv ));
|
||||
|
||||
LBER_F( ber_tag_t )
|
||||
ber_skip_element LDAP_P((
|
||||
BerElement *ber,
|
||||
|
|
|
|||
|
|
@ -234,6 +234,25 @@ ber_skip_element( BerElement *ber, struct berval *bv )
|
|||
return tag;
|
||||
}
|
||||
|
||||
/* Move past next element, point *bv at the complete element in-place, and
|
||||
* return its tag. The caller may \0-terminate *bv, as next octet is saved in
|
||||
* ber->ber_tag. Similar to ber_skip_element(ber, bv) except the tag+length
|
||||
* header is also included in *bv.
|
||||
*/
|
||||
ber_tag_t
|
||||
ber_skip_raw( BerElement *ber, struct berval *bv )
|
||||
{
|
||||
char *val = ber->ber_ptr;
|
||||
ber_tag_t tag = ber_skip_element( ber, bv );
|
||||
|
||||
if ( tag != LBER_DEFAULT ) {
|
||||
bv->bv_len += bv->bv_val - val;
|
||||
bv->bv_val = val;
|
||||
}
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
ber_tag_t
|
||||
ber_peek_tag(
|
||||
BerElement *ber,
|
||||
|
|
|
|||
Loading…
Reference in a new issue