Home | History | Annotate | Download | only in liblber

Lines Matching refs:bv

94 /* Return tag, with *bv = rest of element (starting at length octets) */
96 ber_tag_and_rest( const BerElement *ber, struct berval *bv )
139 bv->bv_len = rest;
140 bv->bv_val = (char *) ptr;
148 struct berval bv;
149 ber_tag_t tag = ber_tag_and_rest( ber, &bv );
151 ber->ber_ptr = bv.bv_val;
155 /* Return next element's tag and point *bv at its contents in-place */
157 ber_peek_element( const BerElement *ber, struct berval *bv )
164 assert( bv != NULL );
169 * bv at the contents.
181 tag = ber_tag_and_rest( ber, bv );
183 rest = bv->bv_len;
184 ptr = (unsigned char *) bv->bv_val;
220 bv->bv_len = len;
221 bv->bv_val = (char *) ptr;
225 /* Move past next element, point *bv at it in-place, and return its tag.
226 * The caller may \0-terminate *bv, as next octet is saved in ber->ber_tag.
227 * Similar to ber_get_stringbv(ber, bv, LBER_BV_NOTERM) except on error.
230 ber_skip_element( BerElement *ber, struct berval *bv )
232 ber_tag_t tag = ber_peek_element( ber, bv );
235 ber->ber_ptr = bv->bv_val + bv->bv_len;
242 /* Move past next element, point *bv at the complete element in-place, and
243 * return its tag. The caller may \0-terminate *bv, as next octet is saved in
244 * ber->ber_tag. Similar to ber_skip_element(ber, bv) except the tag+length
245 * header is also included in *bv.
248 ber_skip_raw( BerElement *ber, struct berval *bv )
251 ber_tag_t tag = ber_skip_element( ber, bv );
254 bv->bv_len += bv->bv_val - val;
255 bv->bv_val = val;
266 struct berval bv;
267 ber_tag_t tag = ber_peek_element( ber, &bv );
269 *len = bv.bv_len;
276 struct berval bv;
277 ber_tag_t tag = ber_peek_element( ber, &bv );
279 ber->ber_ptr = bv.bv_val;
282 *lenp = bv.bv_len;
291 struct berval bv;
292 ber_tag_t tag = ber_skip_element( ber, &bv );
298 return ber_decode_int( &bv, num ) ? LBER_DEFAULT : tag;
302 ber_decode_int( const struct berval *bv, ber_int_t *num )
304 ber_len_t len = bv->bv_len;
312 unsigned char *buf = (unsigned char *) bv->bv_val;
347 struct berval bv;
350 if ( (tag = ber_skip_element( ber, &bv )) == LBER_DEFAULT ) {
355 if ( bv.bv_len >= *len ) {
359 memcpy( buf, bv.bv_val, bv.bv_len );
360 buf[bv.bv_len] = '\0';
362 *len = bv.bv_len;
392 struct berval bv, *bvp = NULL;
396 struct berval **bv; /* BvVec */
400 tag = ber_skip_tag( ber, &bv.bv_len );
405 last = orig + bv.bv_len;
408 if ( ber_skip_element( ber, &bv ) == LBER_DEFAULT )
440 res.bv = b->result;
441 res.bv[i] = NULL;
452 tag = ber_get_stringbv( ber, &bv, b->option );
460 res.ca[n] = bv.bv_val;
463 res.ba[n] = bv;
469 ber_memfree_x( bv.bv_val, ber->ber_memctx );
472 res.bv[n] = bvp;
473 *bvp = bv;
476 *(struct berval *)(res.bo + tot_size) = bv;
494 ber_memfree_x(res.bv[n]->bv_val, ber->ber_memctx);
495 ber_memfree_x(res.bv[n], ber->ber_memctx);
508 ber_get_stringbv( BerElement *ber, struct berval *bv, int option )
513 tag = ber_skip_element( ber, bv );
516 bv->bv_len && memchr( bv->bv_val, 0, bv->bv_len - 1 )))
518 bv->bv_val = NULL;
522 data = bv->bv_val;
524 bv->bv_val = (char *) ber_memalloc_x( bv->bv_len + 1,
526 if ( bv->bv_val == NULL ) {
530 if ( bv->bv_len != 0 ) {
531 memcpy( bv->bv_val, data, bv->bv_len );
533 data = bv->bv_val;
536 data[bv->bv_len] = '\0';
542 ber_get_stringbv_null( BerElement *ber, struct berval *bv, int option )
547 tag = ber_skip_element( ber, bv );
548 if ( tag == LBER_DEFAULT || bv->bv_len == 0 ) {
549 bv->bv_val = NULL;
554 memchr( bv->bv_val, 0, bv->bv_len - 1 ))
556 bv->bv_val = NULL;
560 data = bv->bv_val;
562 bv->bv_val = (char *) ber_memalloc_x( bv->bv_len + 1,
564 if ( bv->bv_val == NULL ) {
568 memcpy( bv->bv_val, data, bv->bv_len );
569 data = bv->bv_val;
572 data[bv->bv_len] = '\0';
580 BerValue bv;
585 tag = ber_get_stringbv( ber, &bv, LBER_BV_ALLOC | LBER_BV_STRING );
586 *buf = bv.bv_val;
594 BerValue bv;
599 tag = ber_get_stringbv_null( ber, &bv, LBER_BV_ALLOC | LBER_BV_STRING );
600 *buf = bv.bv_val;
606 ber_get_stringal( BerElement *ber, struct berval **bv )
611 assert( bv != NULL );
613 *bv = (struct berval *) ber_memalloc_x( sizeof(struct berval),
615 if ( *bv == NULL ) {
619 tag = ber_get_stringbv( ber, *bv, LBER_BV_ALLOC );
621 ber_memfree_x( *bv, ber->ber_memctx );
622 *bv = NULL;