]> git.sur5r.net Git - openldap/commitdiff
Backout premature commit.
authorKurt Zeilenga <kurt@openldap.org>
Mon, 8 Nov 1999 19:36:30 +0000 (19:36 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Mon, 8 Nov 1999 19:36:30 +0000 (19:36 +0000)
libraries/liblber/decode.c

index e8b889d2e78a8e0fa69951fcb4b101fd0199984c..f150e756fd197bab7d42eac5e3dcf085bc96669b 100644 (file)
@@ -135,21 +135,23 @@ ber_peek_tag(
        BerElement *ber_in,
        ber_len_t *len )
 {
-       char*   save;
+       ber_tag_t       tag;
        BerElement *ber;
-       ber_tag_t tag;
 
        assert( ber_in != NULL );
        assert( BER_VALID( ber_in ) );
 
-       /* save state */
-       save = ber->ber_ptr;
+       ber = ber_dup( ber_in );
 
-       tag = ber_skip_tag( ber, len );
+       if( ber == NULL ) {
+               return LBER_ERROR;
+       }
 
-       /* restore state */
-       ber->ber_ptr = save;
+       assert( BER_VALID( ber ) );
 
+       tag = ber_skip_tag( ber, len );
+
+       ber_free( ber, 0 );
        return( tag );
 }
 
@@ -451,7 +453,8 @@ ber_first_element(
 
        /* skip the sequence header, use the len to mark where to stop */
        if ( ber_skip_tag( ber, len ) == LBER_DEFAULT ) {
-               return( LBER_ERROR );
+               *last = NULL;
+               return( LBER_DEFAULT );
        }
 
        *last = ber->ber_ptr + *len;
@@ -476,7 +479,6 @@ ber_next_element(
        assert( BER_VALID( ber ) );
 
        if ( ber->ber_ptr == last ) {
-               /* set last to NULL on end of SEQUENCE */
                return( LBER_DEFAULT );
        }