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__) |
#ifdef STDC_HEADERS |
#include <stdlib.h> |
#include <stdlib.h> |
#else /* next || vms || freebsd */ |
|
#include <malloc.h> |
|
#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 */ |
#endif |
#include <sys/types.h> |
|
#include <sys/socket.h> |
#include <ac/string.h> |
#include <netinet/in.h> |
#include <ac/socket.h> |
#ifdef PCNFS |
|
#include <tklib.h> |
|
#endif /* PCNFS */ |
|
#endif /* MACOS */ |
|
|
|
#if defined( DOS ) || defined( _WIN32 ) |
|
#include "msdos.h" |
|
#endif /* DOS */ |
|
|
|
#include <string.h> |
|
#include "lber.h" |
#include "lber.h" |
|
|
#ifdef LDAP_DEBUG |
#ifdef LDAP_DEBUG |
int lber_debug; |
int lber_debug; |
#endif |
#endif |
|
|
#ifdef NEEDPROTOS |
static int ber_getnint LDAP_P(( BerElement *ber, long *num, int len )); |
static int ber_getnint( BerElement *ber, long *num, int len ); |
|
#endif /* NEEDPROTOS */ |
|
|
|
|
|
/* return the tag - LBER_DEFAULT returned means trouble */ |
/* return the tag - LBER_DEFAULT returned means trouble */ |
unsigned long |
unsigned long |
Line 130 ber_skip_tag( BerElement *ber, unsigned
|
Line 111 ber_skip_tag( BerElement *ber, unsigned
|
if ( ber_read( ber, (char *) &netlen + diff, noctets ) |
if ( ber_read( ber, (char *) &netlen + diff, noctets ) |
!= noctets ) |
!= noctets ) |
return( LBER_DEFAULT ); |
return( LBER_DEFAULT ); |
*len = LBER_NTOHL( netlen ); |
*len = AC_NTOHL( netlen ); |
} else { |
} else { |
*len = lc; |
*len = lc; |
} |
} |
Line 179 ber_getnint( BerElement *ber, long *num,
|
Line 160 ber_getnint( BerElement *ber, long *num,
|
sign = (0x80 & *(p+diff) ); |
sign = (0x80 & *(p+diff) ); |
if ( sign && len < sizeof(long) ) { |
if ( sign && len < sizeof(long) ) { |
for ( i = 0; i < diff; i++ ) { |
for ( i = 0; i < diff; i++ ) { |
*(p+i) = 0xff; |
*(p+i) = (unsigned char) 0xff; |
} |
} |
} |
} |
*num = LBER_NTOHL( netnum ); |
*num = AC_NTOHL( netnum ); |
|
|
return( len ); |
return( len ); |
} |
} |
Line 195 ber_get_int( BerElement *ber, long *num
|
Line 176 ber_get_int( BerElement *ber, long *num
|
if ( (tag = ber_skip_tag( ber, &len )) == LBER_DEFAULT ) |
if ( (tag = ber_skip_tag( ber, &len )) == LBER_DEFAULT ) |
return( LBER_DEFAULT ); |
return( LBER_DEFAULT ); |
|
|
if ( ber_getnint( ber, num, (int)len ) != len ) |
if ( (unsigned long) ber_getnint( ber, num, (int)len ) != len ) |
return( LBER_DEFAULT ); |
return( LBER_DEFAULT ); |
else |
else |
return( tag ); |
return( tag ); |
Line 214 ber_get_stringb( BerElement *ber, char *
|
Line 195 ber_get_stringb( BerElement *ber, char *
|
if ( datalen > (*len - 1) ) |
if ( datalen > (*len - 1) ) |
return( LBER_DEFAULT ); |
return( LBER_DEFAULT ); |
|
|
if ( ber_read( ber, buf, datalen ) != datalen ) |
if ( (unsigned long) ber_read( ber, buf, datalen ) != datalen ) |
return( LBER_DEFAULT ); |
return( LBER_DEFAULT ); |
|
|
buf[datalen] = '\0'; |
buf[datalen] = '\0'; |
Line 253 ber_get_stringa( BerElement *ber, char *
|
Line 234 ber_get_stringa( BerElement *ber, char *
|
if ( (*buf = (char *) malloc( (size_t)datalen + 1 )) == NULL ) |
if ( (*buf = (char *) malloc( (size_t)datalen + 1 )) == NULL ) |
return( LBER_DEFAULT ); |
return( LBER_DEFAULT ); |
|
|
if ( ber_read( ber, *buf, datalen ) != datalen ) |
if ( (unsigned long) ber_read( ber, *buf, datalen ) != datalen ) |
return( LBER_DEFAULT ); |
return( LBER_DEFAULT ); |
(*buf)[datalen] = '\0'; |
(*buf)[datalen] = '\0'; |
|
|
Line 286 ber_get_stringal( BerElement *ber, struc
|
Line 267 ber_get_stringal( BerElement *ber, struc
|
if ( ((*bv)->bv_val = (char *) malloc( (size_t)len + 1 )) == NULL ) |
if ( ((*bv)->bv_val = (char *) malloc( (size_t)len + 1 )) == NULL ) |
return( LBER_DEFAULT ); |
return( LBER_DEFAULT ); |
|
|
if ( ber_read( ber, (*bv)->bv_val, len ) != len ) |
if ( (unsigned long) ber_read( ber, (*bv)->bv_val, len ) != len ) |
return( LBER_DEFAULT ); |
return( LBER_DEFAULT ); |
((*bv)->bv_val)[len] = '\0'; |
((*bv)->bv_val)[len] = '\0'; |
(*bv)->bv_len = len; |
(*bv)->bv_len = len; |
Line 323 ber_get_bitstringa( BerElement *ber, cha
|
Line 304 ber_get_bitstringa( BerElement *ber, cha
|
if ( ber_read( ber, (char *)&unusedbits, 1 ) != 1 ) |
if ( ber_read( ber, (char *)&unusedbits, 1 ) != 1 ) |
return( LBER_DEFAULT ); |
return( LBER_DEFAULT ); |
|
|
if ( ber_read( ber, *buf, datalen ) != datalen ) |
if ( (unsigned long) ber_read( ber, *buf, datalen ) != datalen ) |
return( LBER_DEFAULT ); |
return( LBER_DEFAULT ); |
|
|
*blen = datalen * 8 - unusedbits; |
*blen = datalen * 8 - unusedbits; |
Line 385 ber_next_element( BerElement *ber, unsig
|
Line 366 ber_next_element( BerElement *ber, unsig
|
|
|
/* VARARGS */ |
/* VARARGS */ |
unsigned long |
unsigned long |
ber_scanf( |
ber_scanf |
#if defined( MACOS ) || defined( BC31 ) || defined( _WIN32 ) |
#ifdef STDC_HEADERS |
BerElement *ber, char *fmt, ... ) |
( BerElement *ber, char *fmt, ... ) |
#else |
#else |
va_alist ) |
( va_alist ) |
va_dcl |
va_dcl |
#endif |
#endif |
{ |
{ |
va_list ap; |
va_list ap; |
#if !defined( MACOS ) && !defined( BC31 ) && !defined( _WIN32 ) |
#ifndef STDC_HEADERS |
BerElement *ber; |
BerElement *ber; |
char *fmt; |
char *fmt; |
#endif |
#endif |
Line 405 va_dcl
|
Line 386 va_dcl
|
long *l, rc, tag; |
long *l, rc, tag; |
unsigned long len; |
unsigned long len; |
|
|
#if defined( MACOS ) || defined( BC31 ) || defined( _WIN32 ) |
#if STDC_HEADERS |
va_start( ap, fmt ); |
va_start( ap, fmt ); |
#else |
#else |
va_start( ap ); |
va_start( ap ); |
Line 539 va_dcl
|
Line 520 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 = LBER_DEFAULT; |
rc = LBER_DEFAULT; |
break; |
break; |
} |
} |