From 24c9ec81f10327ed06f3f205f38772646daa63df Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Wed, 12 Mar 2003 21:46:02 +0000 Subject: [PATCH] fix ber decoding error (ITS#2365) --- libraries/liblber/decode.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libraries/liblber/decode.c b/libraries/liblber/decode.c index 33f33b4c6d..dc1518bcf4 100644 --- a/libraries/liblber/decode.c +++ b/libraries/liblber/decode.c @@ -315,14 +315,14 @@ ber_get_stringbvl( bgbvr *b, ber_len_t *rlen ) 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 *rlen ) break; } b->ber->ber_ptr = orig; + b->ber->ber_tag = tag; ber_skip_tag( b->ber, &len ); for (n=0; n