Diff for /libraries/liblber/encode.c between versions 1.4 and 1.5

version 1.4, 1998/08/17 21:26:26 version 1.5, 1998/10/24 23:41:55
Line 11 Line 11
  * is provided ``as is'' without express or implied warranty.   * is provided ``as is'' without express or implied warranty.
  */   */
   
   #include "portable.h"
   
 #include <stdio.h>  #include <stdio.h>
 #ifdef MACOS  
 #include <stdlib.h>  
 #include <stdarg.h>  
 #include "macos.h"  
 #else /* MACOS */  
 #if defined(NeXT) || defined(VMS) || defined(__FreeBSD__)  
 #include <stdlib.h>  #include <stdlib.h>
 #else /* next || vms || freebsd */  
 #include <malloc.h>  #ifdef STDC_HEADERS
 #endif /* next || vms || freebsd */  
 #if defined( BC31 ) || defined( _WIN32 )  
 #include <stdarg.h>  #include <stdarg.h>
 #else /* BC31 || _WIN32 */  #else
 #include <varargs.h>  #include <varargs.h>
 #endif /* BC31 || _WIN32 */  
 #include <sys/types.h>  
 #include <sys/socket.h>  
 #include <netinet/in.h>  
 #ifdef PCNFS  
 #include <tklib.h>  
 #endif /* PCNFS */  
 #endif /* MACOS */  
 #ifndef VMS  
 #include <memory.h>  
 #endif  #endif
 #include <string.h>  
   #include <ac/socket.h>
   #include <ac/string.h>
   
 #include "lber.h"  #include "lber.h"
   
 #if defined( DOS ) || defined( _WIN32 )  static int ber_put_len LDAP_P(( BerElement *ber,
 #include "msdos.h"          unsigned long len, int nosos ));
 #endif /* DOS */  
   static int ber_start_seqorset LDAP_P(( BerElement *ber,
 #ifdef NEEDPROTOS          unsigned long tag ));
 static int ber_put_len( BerElement *ber, unsigned long len, int nosos );  
 static int ber_start_seqorset( BerElement *ber, unsigned long tag );  static int ber_put_seqorset LDAP_P(( BerElement *ber ));
 static int ber_put_seqorset( BerElement *ber );  
 static int ber_put_int_or_enum( BerElement *ber, long num, unsigned long tag );  static int ber_put_int_or_enum LDAP_P(( BerElement *ber,
 #endif /* NEEDPROTOS */          long num, unsigned long tag ));
   
   
 static int  static int
Line 77  ber_put_tag( BerElement *ber, unsigned l Line 64  ber_put_tag( BerElement *ber, unsigned l
   
         taglen = ber_calc_taglen( tag );          taglen = ber_calc_taglen( tag );
   
         ntag = LBER_HTONL( tag );          ntag = AC_HTONL( tag );
   
         return( ber_write( ber, ((char *) &ntag) + sizeof(long) - taglen,          return( ber_write( ber, ((char *) &ntag) + sizeof(long) - taglen,
             taglen, nosos ) );              taglen, nosos ) );
Line 123  ber_put_len( BerElement *ber, unsigned l Line 110  ber_put_len( BerElement *ber, unsigned l
          */           */
   
         if ( len <= 127 ) {          if ( len <= 127 ) {
                 netlen = LBER_HTONL( len );                  netlen = AC_HTONL( len );
                 return( ber_write( ber, (char *) &netlen + sizeof(long) - 1,                  return( ber_write( ber, (char *) &netlen + sizeof(long) - 1,
                     1, nosos ) );                      1, nosos ) );
         }          }
Line 140  ber_put_len( BerElement *ber, unsigned l Line 127  ber_put_len( BerElement *ber, unsigned l
                 if ( len & mask )                  if ( len & mask )
                         break;                          break;
         }          }
         lenlen = ++i;          lenlen = (unsigned char) ++i;
         if ( lenlen > 4 )          if ( lenlen > 4 )
                 return( -1 );                  return( -1 );
         lenlen |= 0x80;          lenlen |= 0x80;
Line 150  ber_put_len( BerElement *ber, unsigned l Line 137  ber_put_len( BerElement *ber, unsigned l
                 return( -1 );                  return( -1 );
   
         /* write the length itself */          /* write the length itself */
         netlen = LBER_HTONL( len );          netlen = AC_HTONL( len );
         if ( ber_write( ber, (char *) &netlen + (sizeof(long) - i), i, nosos )          if ( ber_write( ber, (char *) &netlen + (sizeof(long) - i), i, nosos )
             != i )              != i )
                 return( -1 );                  return( -1 );
Line 201  ber_put_int_or_enum( BerElement *ber, lo Line 188  ber_put_int_or_enum( BerElement *ber, lo
         if ( (lenlen = ber_put_len( ber, len, 0 )) == -1 )          if ( (lenlen = ber_put_len( ber, len, 0 )) == -1 )
                 return( -1 );                  return( -1 );
         i++;          i++;
         netnum = LBER_HTONL( num );          netnum = AC_HTONL( num );
         if ( ber_write( ber, (char *) &netnum + (sizeof(long) - i), i, 0 )          if ( ber_write( ber, (char *) &netnum + (sizeof(long) - i), i, 0 )
            != i )             != i )
                 return( -1 );                  return( -1 );
Line 257  ber_put_ostring( BerElement *ber, char * Line 244  ber_put_ostring( BerElement *ber, char *
 #endif /* STR_TRANSLATION */  #endif /* STR_TRANSLATION */
   
         if ( (lenlen = ber_put_len( ber, len, 0 )) == -1 ||          if ( (lenlen = ber_put_len( ber, len, 0 )) == -1 ||
                 ber_write( ber, str, len, 0 ) != len ) {                  (unsigned long) ber_write( ber, str, len, 0 ) != len ) {
                 rc = -1;                  rc = -1;
         } else {          } else {
                 /* return length of tag + length + contents */                  /* return length of tag + length + contents */
Line 293  ber_put_bitstring( BerElement *ber, char Line 280  ber_put_bitstring( BerElement *ber, char
                 return( -1 );                  return( -1 );
   
         len = ( blen + 7 ) / 8;          len = ( blen + 7 ) / 8;
         unusedbits = len * 8 - blen;          unusedbits = (unsigned char) ((len * 8) - blen);
         if ( (lenlen = ber_put_len( ber, len + 1, 0 )) == -1 )          if ( (lenlen = ber_put_len( ber, len + 1, 0 )) == -1 )
                 return( -1 );                  return( -1 );
   
Line 409  ber_put_seqorset( BerElement *ber ) Line 396  ber_put_seqorset( BerElement *ber )
          */           */
   
         len = (*sos)->sos_clen;          len = (*sos)->sos_clen;
         netlen = LBER_HTONL( len );          netlen = AC_HTONL( len );
         if ( sizeof(long) > 4 && len > 0xFFFFFFFFL )          if ( sizeof(long) > 4 && len > 0xFFFFFFFFL )
                 return( -1 );                  return( -1 );
   
Line 458  ber_put_seqorset( BerElement *ber ) Line 445  ber_put_seqorset( BerElement *ber )
   
                 /* the tag */                  /* the tag */
                 taglen = ber_calc_taglen( (*sos)->sos_tag );                  taglen = ber_calc_taglen( (*sos)->sos_tag );
                 ntag = LBER_HTONL( (*sos)->sos_tag );                  ntag = AC_HTONL( (*sos)->sos_tag );
                 SAFEMEMCPY( (*sos)->sos_first, (char *) &ntag +                  SAFEMEMCPY( (*sos)->sos_first, (char *) &ntag +
                     sizeof(long) - taglen, taglen );                      sizeof(long) - taglen, taglen );
   
                 if ( ber->ber_options & LBER_USE_DER ) {                  if ( ber->ber_options & LBER_USE_DER ) {
                         ltag = (lenlen == 1) ? len : 0x80 + (lenlen - 1);                          ltag = (lenlen == 1)
                                   ? (unsigned char) len
                                   : 0x80 + (lenlen - 1);
                 }                  }
   
                 /* one byte of length length */                  /* one byte of length length */
Line 519  ber_put_set( BerElement *ber ) Line 508  ber_put_set( BerElement *ber )
   
 /* VARARGS */  /* VARARGS */
 int  int
 ber_printf(  ber_printf
 #if defined( MACOS ) || defined( _WIN32 ) || defined( BC31 )  #ifdef STDC_HEADERS
         BerElement *ber, char *fmt, ... )          ( BerElement *ber, char *fmt, ... )
 #else /* MACOS || _WIN32 || BC31 */  #else
         va_alist )          ( va_alist )
 va_dcl  va_dcl
 #endif /* MACOS || _WIN32 || BC31 */  #endif
 {  {
         va_list         ap;          va_list         ap;
 #if !defined( MACOS ) && !defined( _WIN32 ) && !defined( BC31 )  #ifndef STDC_HEADERS
         BerElement      *ber;          BerElement      *ber;
         char            *fmt;          char            *fmt;
 #endif /* !MACOS && !_WIN32 && !BC31 */  #endif
         char            *s, **ss;          char            *s, **ss;
         struct berval   **bv;          struct berval   **bv;
         int             rc, i;          int             rc, i;
         unsigned long   len;          unsigned long   len;
   
 #if defined( MACOS ) || defined( _WIN32 ) || defined( BC31 )  #ifdef STDC_HEADERS 
         va_start( ap, fmt );          va_start( ap, fmt );
 #else /* MACOS || _WIN32 || BC31 */  #else
         va_start( ap );          va_start( ap );
         ber = va_arg( ap, BerElement * );          ber = va_arg( ap, BerElement * );
         fmt = va_arg( ap, char * );          fmt = va_arg( ap, char * );
 #endif /* MACOS || _WIN32 || BC31 */  #endif
   
         for ( rc = 0; *fmt && rc != -1; fmt++ ) {          for ( rc = 0; *fmt && rc != -1; fmt++ ) {
                 switch ( *fmt ) {                  switch ( *fmt ) {
Line 625  va_dcl Line 614  va_dcl
                         break;                          break;
   
                 default:                  default:
 #ifndef NO_USERINTERFACE  #ifdef LDAP_LIBUI
                         fprintf( stderr, "unknown fmt %c\n", *fmt );                          fprintf( stderr, "unknown fmt %c\n", *fmt );
 #endif /* NO_USERINTERFACE */  #endif /* LDAP_LIBUI */
                         rc = -1;                          rc = -1;
                         break;                          break;
                 }                  }

Removed from v.1.4  
changed lines
  Added in v.1.5


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