Diff for /libraries/liblber/decode.c between versions 1.125 and 1.126

version 1.125, 2009/08/07 17:15:26 version 1.126, 2009/08/07 17:26:11
Line 1 Line 1
 /* decode.c - ber input decoding routines */  /* decode.c - ber input decoding routines */
 /* $OpenLDAP: pkg/ldap/libraries/liblber/decode.c,v 1.124 2009/08/07 14:04:25 hallvard Exp $ */  /* $OpenLDAP: pkg/ldap/libraries/liblber/decode.c,v 1.125 2009/08/07 17:15:26 hallvard Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *   *
  * Copyright 1998-2009 The OpenLDAP Foundation.   * Copyright 1998-2009 The OpenLDAP Foundation.
Line 366  ber_get_stringbvl( BerElement *ber, bgbv Line 366  ber_get_stringbvl( BerElement *ber, bgbv
                 char *bo;                               /* BvOff */                  char *bo;                               /* BvOff */
         } res;          } res;
   
         /* For rewinding, just like ber_peek_tag() */          tag = ber_skip_tag( ber, &bv.bv_len );
         orig = ber->ber_ptr;  
         tag = ber->ber_tag;          if ( tag != LBER_DEFAULT ) {
                   tag = 0;
                   orig = ber->ber_ptr;
                   last = orig + bv.bv_len;
   
         if ( ber_first_element( ber, &bv.bv_len, &last ) != LBER_DEFAULT ) {  
                 for ( ; ber->ber_ptr < last; i++, tot_size += siz ) {                  for ( ; ber->ber_ptr < last; i++, tot_size += siz ) {
                         if ( ber_skip_element( ber, &bv ) == LBER_DEFAULT )                          if ( ber_skip_element( ber, &bv ) == LBER_DEFAULT )
                                 break;                                  break;
                 }                  }
                   if ( ber->ber_ptr != last ) {
                           i = 0;
                           tag = LBER_DEFAULT;
                   }
   
                   ber->ber_ptr = orig;
                   ber->ber_tag = *(unsigned char *) orig;
         }          }
   
         b->siz = i;          b->siz = i;
         if ( i == 0 ) {          if ( i == 0 ) {
                 return 0;                  return tag;
         }          }
   
         /* Allocate and NULL-terminate the result vector */          /* Allocate and NULL-terminate the result vector */
Line 406  ber_get_stringbvl( BerElement *ber, bgbv Line 415  ber_get_stringbvl( BerElement *ber, bgbv
                 tot_size = 0;                  tot_size = 0;
                 break;                  break;
         }          }
         ber->ber_ptr = orig;  
         ber->ber_tag = tag;  
         ber_skip_tag( ber, &bv.bv_len );  
   
         n = 0;          n = 0;
         do {          do {
                 tag = ber_next_element( ber, &bv.bv_len, last );                  tag = ber_get_stringbv( ber, &bv, b->alloc );
                 if ( ber_get_stringbv( ber, &bv, b->alloc ) == LBER_DEFAULT ) {                  if ( tag == LBER_DEFAULT ) {
                         goto nomem;                          goto nomem;
                 }                  }
   

Removed from v.1.125  
changed lines
  Added in v.1.126


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org