Diff for /libraries/liblber/decode.c between versions 1.113 and 1.116

version 1.113, 2008/01/07 23:20:03 version 1.116, 2009/02/10 11:44:12
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.112 2007/10/17 23:35:07 hyc Exp $ */  /* $OpenLDAP: pkg/ldap/libraries/liblber/decode.c,v 1.115 2009/01/21 23:40:19 kurt 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-2008 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 143  ber_skip_tag( BerElement *ber, ber_len_t Line 143  ber_skip_tag( BerElement *ber, ber_len_t
 {  {
         ber_tag_t       tag;          ber_tag_t       tag;
         unsigned char   lc;          unsigned char   lc;
         ber_len_t       i, noctets;          char            *save;
         unsigned char netlen[sizeof(ber_len_t)];  
   
         assert( ber != NULL );          assert( ber != NULL );
         assert( len != NULL );          assert( len != NULL );
         assert( LBER_VALID( ber ) );          assert( LBER_VALID( ber ) );
   
           save = ber->ber_ptr;
   
         /*          /*
          * Any ber element looks like this: tag length contents.           * Any ber element looks like this: tag length contents.
          * Assuming everything's ok, we return the tag byte (we           * Assuming everything's ok, we return the tag byte (we
Line 182  ber_skip_tag( BerElement *ber, ber_len_t Line 183  ber_skip_tag( BerElement *ber, ber_len_t
         }          }
   
         if ( lc & 0x80U ) {          if ( lc & 0x80U ) {
                   ber_len_t       i, noctets;
                   unsigned char netlen[sizeof(ber_len_t)];
   
                 noctets = (lc & 0x7fU);                  noctets = (lc & 0x7fU);
   
                 if ( noctets > sizeof(ber_len_t) ) {                  if ( noctets > sizeof(ber_len_t) ) {
Line 202  ber_skip_tag( BerElement *ber, ber_len_t Line 206  ber_skip_tag( BerElement *ber, ber_len_t
         }          }
   
         /* 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 ) + ber->ber_ptr - save) ) {
                 return LBER_DEFAULT;                  return LBER_DEFAULT;
         }          }
         ber->ber_tag = *(unsigned char *)ber->ber_ptr;          ber->ber_tag = *(unsigned char *)ber->ber_ptr;

Removed from v.1.113  
changed lines
  Added in v.1.116


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