--- libraries/liblber/decode.c 2003/03/03 17:10:04 1.84.2.6 +++ libraries/liblber/decode.c 2003/03/12 20:46:02 1.84.2.7 @@ -1,5 +1,5 @@ /* decode.c - ber input decoding routines */ -/* $OpenLDAP: pkg/ldap/libraries/liblber/decode.c,v 1.84.2.5 2003/03/03 16:57:05 kurt Exp $ */ +/* $OpenLDAP: pkg/ldap/libraries/liblber/decode.c,v 1.84.2.6 2003/03/03 17:10:04 kurt Exp $ */ /* * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file @@ -315,14 +315,14 @@ ber_get_stringbvl( bgbvr *b, ber_len_t * char *last, *orig; struct berval bv, *bvp = NULL; + /* For rewinding, just like ber_peek_tag() */ orig = b->ber->ber_ptr; + tag = b->ber->ber_tag; - tag = ber_first_element( b->ber, &len, &last ); - if ( tag != LBER_DEFAULT ) { + if ( ber_first_element( b->ber, &len, &last ) != LBER_DEFAULT ) { for ( ; b->ber->ber_ptr < last; i++ ) { - tag = ber_skip_tag( b->ber, &len ); - if (tag == LBER_DEFAULT) break; + if (ber_skip_tag( b->ber, &len ) == LBER_DEFAULT) break; b->ber->ber_ptr += len; } } @@ -366,6 +366,7 @@ ber_get_stringbvl( bgbvr *b, ber_len_t * break; } b->ber->ber_ptr = orig; + b->ber->ber_tag = tag; ber_skip_tag( b->ber, &len ); for (n=0; n