Diff for /libraries/liblber/decode.c between versions 1.83 and 1.89

version 1.83, 2002/01/12 01:23:04 version 1.89, 2003/01/23 01:19:59
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.82 2002/01/07 20:48:17 kurt Exp $ */  /* $OpenLDAP: pkg/ldap/libraries/liblber/decode.c,v 1.88 2003/01/19 13:02:06 hallvard Exp $ */
 /*  /*
  * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.   * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file   * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */   */
 /* Portions  /* Portions
Line 141  ber_skip_tag( BerElement *ber, ber_len_t Line 141  ber_skip_tag( BerElement *ber, ber_len_t
                 *len = lc;                  *len = lc;
         }          }
   
         /* BER length should be non-negative */  
         if( *len < 0 ) {  
                 return LBER_DEFAULT;  
         }  
   
         /* BER element should have enough data left */          /* BER element should have enough data left */
         if( *len > (ber_len_t) ber_pvt_ber_remaining( ber ) ) {          if( *len > (ber_len_t) ber_pvt_ber_remaining( ber ) ) {
                 return LBER_DEFAULT;                  return LBER_DEFAULT;
Line 309  typedef struct bgbvr { Line 304  typedef struct bgbvr {
         ber_len_t off;          ber_len_t off;
         union {          union {
                 char ***c;                  char ***c;
                 BVarray *ba;                  BerVarray *ba;
                 struct berval ***bv;                  struct berval ***bv;
         } res;          } res;
 } bgbvr;  } bgbvr;
Line 395  ber_get_stringbvr( bgbvr *b, int n ) Line 390  ber_get_stringbvr( bgbvr *b, int n )
                         *bvp = bv;                          *bvp = bv;
                         break;                          break;
                 case BvOff:                  case BvOff:
                         *(BVarray)((long)(*b->res.ba)+n*b->siz+b->off) = bv;                          *(BerVarray)((long)(*b->res.ba)+n*b->siz+b->off) = bv;
                 }                  }
         } else {          } else {
                 /* Failure will propagate up and free in reverse                  /* Failure will propagate up and free in reverse
Line 603  ber_next_element( Line 598  ber_next_element(
   
         assert( LBER_VALID( ber ) );          assert( LBER_VALID( ber ) );
   
         if ( ber->ber_ptr == last ) {          if ( ber->ber_ptr >= last ) {
                 return LBER_DEFAULT;                  return LBER_DEFAULT;
         }          }
   
Line 619  ber_scanf ( BerElement *ber, Line 614  ber_scanf ( BerElement *ber,
         va_list         ap;          va_list         ap;
         LDAP_CONST char         *fmt_reset;          LDAP_CONST char         *fmt_reset;
         char            *s, **ss;          char            *s, **ss;
 #ifdef TMP_SLOTS  
         char            *last;  
         char ***sss;  
         ber_tag_t tag;  
         struct berval ***bv;  
         int j;  
 #endif  
         struct berval   **bvp, *bval;          struct berval   **bvp, *bval;
         ber_int_t       *i;          ber_int_t       *i;
         ber_len_t       *l;          ber_len_t       *l;
Line 643  ber_scanf ( BerElement *ber, Line 631  ber_scanf ( BerElement *ber,
         fmt_reset = fmt;          fmt_reset = fmt;
   
 #ifdef NEW_LOGGING  #ifdef NEW_LOGGING
         LDAP_LOG(( "liblber", LDAP_LEVEL_ENTRY, "ber_scanf fmt (%s) ber:\n", fmt ));          LDAP_LOG( BER, ENTRY, "ber_scanf fmt (%s) ber:\n", fmt, 0, 0 );
         BER_DUMP(( "liblber", LDAP_LEVEL_DETAIL2, ber, 1 ));  
           if ( LDAP_LOGS_TEST(BER, DETAIL2 ))
                           BER_DUMP(( "liblber", LDAP_LEVEL_DETAIL2, ber, 1 ));
 #else  #else
         ber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug,          ber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug,
                 "ber_scanf fmt (%s) ber:\n", fmt );                  "ber_scanf fmt (%s) ber:\n", fmt );
Line 796  ber_scanf ( BerElement *ber, Line 786  ber_scanf ( BerElement *ber,
                 default:                  default:
                         if( ber->ber_debug ) {                          if( ber->ber_debug ) {
 #ifdef NEW_LOGGING  #ifdef NEW_LOGGING
                                 LDAP_LOG(( "liblber", LDAP_LEVEL_ERR,                                  LDAP_LOG( BER, ERR, 
                                         "ber_scanf: unknown fmt %c\n", *fmt ));                                          "ber_scanf: unknown fmt %c\n", *fmt, 0, 0 );
 #else  #else
                                 ber_log_printf( LDAP_DEBUG_ANY, ber->ber_debug,                                  ber_log_printf( LDAP_DEBUG_ANY, ber->ber_debug,
                                         "ber_scanf: unknown fmt %c\n", *fmt );                                          "ber_scanf: unknown fmt %c\n", *fmt );
Line 884  ber_scanf ( BerElement *ber, Line 874  ber_scanf ( BerElement *ber,
   
                 case 'v':       /* sequence of strings */                  case 'v':       /* sequence of strings */
                 case 'V':       /* sequence of strings + lengths */                  case 'V':       /* sequence of strings + lengths */
                 case 'W':       /* BVarray */                  case 'W':       /* BerVarray */
                 case 'm':       /* berval in-place */                  case 'm':       /* berval in-place */
                 case 'M':       /* BVoff array in-place */                  case 'M':       /* BVoff array in-place */
                 case 'n':       /* null */                  case 'n':       /* null */

Removed from v.1.83  
changed lines
  Added in v.1.89


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