ITS#8733 Allow extraction of the complete ber element

This commit is contained in:
Hallvard Furuseth 2017-06-23 10:55:36 +01:00 committed by Ondřej Kuzník
parent 6aa6daf2f0
commit 62811e8f65
2 changed files with 24 additions and 0 deletions

View file

@ -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,

View file

@ -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,