]> git.sur5r.net Git - openldap/commitdiff
fix ber decoding error (ITS#2365)
authorKurt Zeilenga <kurt@openldap.org>
Wed, 12 Mar 2003 21:46:02 +0000 (21:46 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Wed, 12 Mar 2003 21:46:02 +0000 (21:46 +0000)
libraries/liblber/decode.c

index 33f33b4c6d5efb2ad252ef1fe949fb714b15efa7..dc1518bcf4c61aa1bd487afbf93d726ab637f6a2 100644 (file)
@@ -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<i; n++)