Diff for /libraries/liblber/decode.c between versions 1.111 and 1.118

version 1.111, 2007/08/24 19:58:20 version 1.118, 2009/07/29 13:06:28
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.110 2007/07/23 10:57:23 hallvard Exp $ */  /* $OpenLDAP: pkg/ldap/libraries/liblber/decode.c,v 1.117 2009/02/10 20:29:56 hyc 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-2007 The OpenLDAP Foundation.   * Copyright 1998-2009 The OpenLDAP Foundation.
  * All rights reserved.   * All rights reserved.
  *   *
  * Redistribution and use in source and binary forms, with or without   * Redistribution and use in source and binary forms, with or without
Line 69  ber_decode_oid( BerValue *in, BerValue * Line 69  ber_decode_oid( BerValue *in, BerValue *
                 val |= der[i] & 0x7f;                  val |= der[i] & 0x7f;
                 if ( !( der[i] & 0x80 )) {                  if ( !( der[i] & 0x80 )) {
                         if ( ptr == NULL ) {                          if ( ptr == NULL ) {
                                 /* Initial "x.y": val=x*40+y, x<=2, y<40 if x=2 */                                  /* Initial "x.y": val=x*40+y, x<=2, y<40 if x<2 */
                                 ptr = out->bv_val;                                  ptr = out->bv_val;
                                 val1 = (val < 80 ? val/40 : 2);                                  val1 = (val < 80 ? val/40 : 2);
                                 val -= val1*40;                                  val -= val1*40;
Line 146  ber_skip_tag( BerElement *ber, ber_len_t Line 146  ber_skip_tag( BerElement *ber, ber_len_t
         ber_len_t       i, noctets;          ber_len_t       i, noctets;
         unsigned char netlen[sizeof(ber_len_t)];          unsigned char netlen[sizeof(ber_len_t)];
   
         assert( ber != NULL );  
         assert( len != NULL );          assert( len != NULL );
         assert( LBER_VALID( ber ) );  
   
         /*          /*
          * Any ber element looks like this: tag length contents.           * Any ber element looks like this: tag length contents.
Line 240  ber_getnint( Line 238  ber_getnint(
 {  {
         unsigned char buf[sizeof(ber_int_t)];          unsigned char buf[sizeof(ber_int_t)];
   
         assert( ber != NULL );  
         assert( num != NULL );          assert( num != NULL );
         assert( LBER_VALID( ber ) );  
   
         /*          /*
          * The tag and length have already been stripped off.  We should           * The tag and length have already been stripped off.  We should
Line 288  ber_get_int( Line 284  ber_get_int(
         ber_tag_t       tag;          ber_tag_t       tag;
         ber_len_t       len;          ber_len_t       len;
   
         assert( ber != NULL );  
         assert( LBER_VALID( ber ) );  
   
         if ( (tag = ber_skip_tag( ber, &len )) == LBER_DEFAULT ) {          if ( (tag = ber_skip_tag( ber, &len )) == LBER_DEFAULT ) {
                 return LBER_DEFAULT;                  return LBER_DEFAULT;
         }          }
Line 319  ber_get_stringb( Line 312  ber_get_stringb(
         ber_len_t       datalen;          ber_len_t       datalen;
         ber_tag_t       tag;          ber_tag_t       tag;
   
         assert( ber != NULL );  
         assert( LBER_VALID( ber ) );  
   
         if ( (tag = ber_skip_tag( ber, &datalen )) == LBER_DEFAULT ) {          if ( (tag = ber_skip_tag( ber, &datalen )) == LBER_DEFAULT ) {
                 return LBER_DEFAULT;                  return LBER_DEFAULT;
         }          }
Line 487  ber_get_stringbv( BerElement *ber, struc Line 477  ber_get_stringbv( BerElement *ber, struc
 {  {
         ber_tag_t       tag;          ber_tag_t       tag;
   
         assert( ber != NULL );  
         assert( bv != NULL );          assert( bv != NULL );
   
         assert( LBER_VALID( ber ) );  
   
         if ( (tag = ber_skip_tag( ber, &bv->bv_len )) == LBER_DEFAULT ) {          if ( (tag = ber_skip_tag( ber, &bv->bv_len )) == LBER_DEFAULT ) {
                 bv->bv_val = NULL;                  bv->bv_val = NULL;
                 return LBER_DEFAULT;                  return LBER_DEFAULT;
Line 531  ber_get_stringbv_null( BerElement *ber, Line 518  ber_get_stringbv_null( BerElement *ber,
 {  {
         ber_tag_t       tag;          ber_tag_t       tag;
   
         assert( ber != NULL );  
         assert( bv != NULL );          assert( bv != NULL );
   
         assert( LBER_VALID( ber ) );  
   
         if ( (tag = ber_skip_tag( ber, &bv->bv_len )) == LBER_DEFAULT ) {          if ( (tag = ber_skip_tag( ber, &bv->bv_len )) == LBER_DEFAULT ) {
                 bv->bv_val = NULL;                  bv->bv_val = NULL;
                 return LBER_DEFAULT;                  return LBER_DEFAULT;
Line 636  ber_get_bitstringa( Line 620  ber_get_bitstringa(
         ber_tag_t       tag;          ber_tag_t       tag;
         unsigned char   unusedbits;          unsigned char   unusedbits;
   
         assert( ber != NULL );  
         assert( buf != NULL );          assert( buf != NULL );
         assert( blen != NULL );          assert( blen != NULL );
   
         assert( LBER_VALID( ber ) );  
   
         if ( (tag = ber_skip_tag( ber, &datalen )) == LBER_DEFAULT ) {          if ( (tag = ber_skip_tag( ber, &datalen )) == LBER_DEFAULT ) {
                 *buf = NULL;                  *buf = NULL;
                 return LBER_DEFAULT;                  return LBER_DEFAULT;
Line 676  ber_get_null( BerElement *ber ) Line 657  ber_get_null( BerElement *ber )
         ber_len_t       len;          ber_len_t       len;
         ber_tag_t       tag;          ber_tag_t       tag;
   
         assert( ber != NULL );  
         assert( LBER_VALID( ber ) );  
   
         if ( (tag = ber_skip_tag( ber, &len )) == LBER_DEFAULT ) {          if ( (tag = ber_skip_tag( ber, &len )) == LBER_DEFAULT ) {
                 return LBER_DEFAULT;                  return LBER_DEFAULT;
         }          }
Line 699  ber_get_boolean( Line 677  ber_get_boolean(
         ber_int_t       longbool;          ber_int_t       longbool;
         ber_tag_t       rc;          ber_tag_t       rc;
   
         assert( ber != NULL );  
         assert( boolval != NULL );          assert( boolval != NULL );
   
         assert( LBER_VALID( ber ) );  
   
         rc = ber_get_int( ber, &longbool );          rc = ber_get_int( ber, &longbool );
         *boolval = longbool;          *boolval = longbool;
   
Line 716  ber_first_element( Line 691  ber_first_element(
         ber_len_t *len,          ber_len_t *len,
         char **last )          char **last )
 {  {
         assert( ber != NULL );  
         assert( len != NULL );  
         assert( last != NULL );          assert( last != NULL );
   
         /* skip the sequence header, use the len to mark where to stop */          /* skip the sequence header, use the len to mark where to stop */
Line 745  ber_next_element( Line 718  ber_next_element(
         assert( ber != NULL );          assert( ber != NULL );
         assert( len != NULL );          assert( len != NULL );
         assert( last != NULL );          assert( last != NULL );
   
         assert( LBER_VALID( ber ) );          assert( LBER_VALID( ber ) );
   
         if ( ber->ber_ptr >= last ) {          if ( ber->ber_ptr >= last ) {
Line 775  ber_scanf ( BerElement *ber, Line 747  ber_scanf ( BerElement *ber,
   
         assert( ber != NULL );          assert( ber != NULL );
         assert( fmt != NULL );          assert( fmt != NULL );
   
         assert( LBER_VALID( ber ) );          assert( LBER_VALID( ber ) );
   
         fmt_reset = fmt;          fmt_reset = fmt;
   
         ber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug,          if ( ber->ber_debug & (LDAP_DEBUG_TRACE|LDAP_DEBUG_BER)) {
                 "ber_scanf fmt (%s) ber:\n", fmt );                  ber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug,
         ber_log_dump( LDAP_DEBUG_BER, ber->ber_debug, ber, 1 );                          "ber_scanf fmt (%s) ber:\n", fmt );
                   ber_log_dump( LDAP_DEBUG_BER, ber->ber_debug, ber, 1 );
           }
   
         for ( rc = 0; *fmt && rc != LBER_DEFAULT; fmt++ ) {          for ( rc = 0; *fmt && rc != LBER_DEFAULT; fmt++ ) {
                 /* When this is modified, remember to update                  /* When this is modified, remember to update
Line 942  ber_scanf ( BerElement *ber, Line 915  ber_scanf ( BerElement *ber,
         }          }
   
         va_end( ap );          va_end( ap );
   
         if ( rc == LBER_DEFAULT ) {          if ( rc == LBER_DEFAULT ) {
                 /*                  /*
                  * Error.  Reclaim malloced memory that was given to the caller.                   * Error.  Reclaim malloced memory that was given to the caller.

Removed from v.1.111  
changed lines
  Added in v.1.118


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