Diff for /libraries/liblber/decode.c between versions 1.6 and 1.11

version 1.6, 1998/10/26 00:18:42 version 1.11, 1998/12/18 20:08:28
Line 14 Line 14
 #include "portable.h"  #include "portable.h"
   
 #include <stdio.h>  #include <stdio.h>
   
 #ifdef STDC_HEADERS  
 #include <stdlib.h>  #include <stdlib.h>
 #include <stdarg.h>  
 #else  #include <ac/stdarg.h>
 #include <varargs.h>  
 #endif  
   
 #include <ac/string.h>  #include <ac/string.h>
 #include <ac/socket.h>  #include <ac/socket.h>
Line 40  ber_get_tag( BerElement *ber ) Line 36  ber_get_tag( BerElement *ber )
         unsigned char   xbyte;          unsigned char   xbyte;
         unsigned long   tag;          unsigned long   tag;
         char            *tagp;          char            *tagp;
         int             i;          unsigned int    i;
   
         if ( ber_read( ber, (char *) &xbyte, 1 ) != 1 )          if ( ber_read( ber, (char *) &xbyte, 1 ) != 1 )
                 return( LBER_DEFAULT );                  return( LBER_DEFAULT );
Line 348  ber_first_element( BerElement *ber, unsi Line 344  ber_first_element( BerElement *ber, unsi
         *last = ber->ber_ptr + *len;          *last = ber->ber_ptr + *len;
   
         if ( *last == ber->ber_ptr ) {          if ( *last == ber->ber_ptr ) {
   #ifdef LBER_END_SEQORSET 
                   return( LBER_END_SEQORSET );
   #else
                 return( LBER_DEFAULT );                  return( LBER_DEFAULT );
   #endif
         }          }
   
         return( ber_peek_tag( ber, len ) );          return( ber_peek_tag( ber, len ) );
Line 358  unsigned long Line 358  unsigned long
 ber_next_element( BerElement *ber, unsigned long *len, char *last )  ber_next_element( BerElement *ber, unsigned long *len, char *last )
 {  {
         if ( ber->ber_ptr == last ) {          if ( ber->ber_ptr == last ) {
   #ifdef LBER_END_SEQORSET 
                   return( LBER_END_SEQORSET );
   #else
                 return( LBER_DEFAULT );                  return( LBER_DEFAULT );
   #endif
         }          }
   
         return( ber_peek_tag( ber, len ) );          return( ber_peek_tag( ber, len ) );
Line 367  ber_next_element( BerElement *ber, unsig Line 371  ber_next_element( BerElement *ber, unsig
 /* VARARGS */  /* VARARGS */
 unsigned long  unsigned long
 ber_scanf  ber_scanf
 #ifdef STDC_HEADERS  #if HAVE_STDARG
         ( BerElement *ber, char *fmt, ... )          ( BerElement *ber, char *fmt, ... )
 #else  #else
         ( va_alist )          ( va_alist )
Line 375  va_dcl Line 379  va_dcl
 #endif  #endif
 {  {
         va_list         ap;          va_list         ap;
 #ifndef STDC_HEADERS  #ifndef HAVE_STDARG
         BerElement      *ber;          BerElement      *ber;
         char            *fmt;          char            *fmt;
 #endif  #endif
Line 383  va_dcl Line 387  va_dcl
         char            *s, **ss, ***sss;          char            *s, **ss, ***sss;
         struct berval   ***bv, **bvp, *bval;          struct berval   ***bv, **bvp, *bval;
         int             *i, j;          int             *i, j;
         long            *l, rc, tag;          long            *l;
         unsigned long   len;          unsigned long   rc, tag, len;
   
 #if STDC_HEADERS  #ifdef HAVE_STDARG
         va_start( ap, fmt );          va_start( ap, fmt );
 #else  #else
         va_start( ap );          va_start( ap );
Line 466  va_dcl Line 470  va_dcl
                         *sss = NULL;                          *sss = NULL;
                         j = 0;                          j = 0;
                         for ( tag = ber_first_element( ber, &len, &last );                          for ( tag = ber_first_element( ber, &len, &last );
                             tag != LBER_DEFAULT && rc != LBER_DEFAULT;                              tag != LBER_DEFAULT && 
                             tag = ber_next_element( ber, &len, last ) ) {  #ifdef LDAP_END_SEQORSET
                                           tag != LBER_END_SEQORSET &&
   #endif
                                           rc != LBER_DEFAULT;
                               tag = ber_next_element( ber, &len, last ) )
                           {
                                 if ( *sss == NULL ) {                                  if ( *sss == NULL ) {
                                         *sss = (char **) malloc(                                          *sss = (char **) malloc(
                                             2 * sizeof(char *) );                                              2 * sizeof(char *) );
Line 478  va_dcl Line 487  va_dcl
                                 rc = ber_get_stringa( ber, &((*sss)[j]) );                                  rc = ber_get_stringa( ber, &((*sss)[j]) );
                                 j++;                                  j++;
                         }                          }
   #ifdef LDAP_END_SEQORSET
                           if (rc != LBER_DEFAULT && 
                                   tag != LBER_END_SEQORSET )
                           {
                                   rc = LBER_DEFAULT;
                           }
   #endif
                         if ( j > 0 )                          if ( j > 0 )
                                 (*sss)[j] = NULL;                                  (*sss)[j] = NULL;
                         break;                          break;
Line 487  va_dcl Line 503  va_dcl
                         *bv = NULL;                          *bv = NULL;
                         j = 0;                          j = 0;
                         for ( tag = ber_first_element( ber, &len, &last );                          for ( tag = ber_first_element( ber, &len, &last );
                             tag != LBER_DEFAULT && rc != LBER_DEFAULT;                              tag != LBER_DEFAULT && 
                             tag = ber_next_element( ber, &len, last ) ) {  #ifdef LDAP_END_SEQORSET
                                           tag != LBER_END_SEQORSET &&
   #endif
                                           rc != LBER_DEFAULT;
                               tag = ber_next_element( ber, &len, last ) )
                           {
                                 if ( *bv == NULL ) {                                  if ( *bv == NULL ) {
                                         *bv = (struct berval **) malloc(                                          *bv = (struct berval **) malloc(
                                             2 * sizeof(struct berval *) );                                              2 * sizeof(struct berval *) );
Line 499  va_dcl Line 520  va_dcl
                                 rc = ber_get_stringal( ber, &((*bv)[j]) );                                  rc = ber_get_stringal( ber, &((*bv)[j]) );
                                 j++;                                  j++;
                         }                          }
   #ifdef LDAP_END_SEQORSET
                           if (rc != LBER_DEFAULT && 
                                   tag != LBER_END_SEQORSET )
                           {
                                   rc = LBER_DEFAULT;
                           }
   #endif
                         if ( j > 0 )                          if ( j > 0 )
                                 (*bv)[j] = NULL;                                  (*bv)[j] = NULL;
                         break;                          break;
Line 536  va_dcl Line 564  va_dcl
 void  void
 ber_bvfree( struct berval *bv )  ber_bvfree( struct berval *bv )
 {  {
   #ifdef LBER_ASSERT
           assert(bv != NULL);                     /* bv damn better point to something */
   #endif
         if ( bv->bv_val != NULL )          if ( bv->bv_val != NULL )
                 free( bv->bv_val );                  free( bv->bv_val );
         free( (char *) bv );          free( (char *) bv );
Line 546  ber_bvecfree( struct berval **bv ) Line 577  ber_bvecfree( struct berval **bv )
 {  {
         int     i;          int     i;
   
   #ifdef LBER_ASSERT
           assert(bv != NULL);                     /* bv damn better point to something */
   #endif
         for ( i = 0; bv[i] != NULL; i++ )          for ( i = 0; bv[i] != NULL; i++ )
                 ber_bvfree( bv[i] );                  ber_bvfree( bv[i] );
         free( (char *) bv );          free( (char *) bv );
Line 560  ber_bvdup( struct berval *bv ) Line 594  ber_bvdup( struct berval *bv )
             == NULL ) {              == NULL ) {
                 return( NULL );                  return( NULL );
         }          }
   
           if ( bv->bv_val == NULL ) {
                   new->bv_val = NULL;
                   new->bv_len = 0;
                   return ( new );
           }
   
         if ( (new->bv_val = (char *) malloc( bv->bv_len + 1 )) == NULL ) {          if ( (new->bv_val = (char *) malloc( bv->bv_len + 1 )) == NULL ) {
                   free( new );
                 return( NULL );                  return( NULL );
         }          }
   
         SAFEMEMCPY( new->bv_val, bv->bv_val, (size_t) bv->bv_len );          SAFEMEMCPY( new->bv_val, bv->bv_val, (size_t) bv->bv_len );
         new->bv_val[bv->bv_len] = '\0';          new->bv_val[bv->bv_len] = '\0';
         new->bv_len = bv->bv_len;          new->bv_len = bv->bv_len;

Removed from v.1.6  
changed lines
  Added in v.1.11


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