* is provided ``as is'' without express or implied warranty.
*/
-#define LDAP_BRIDGE /* disable LDAP_BRIDGE code */
#include "portable.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>
-#else /* next || vms || freebsd */
-#include <malloc.h>
-#endif /* next || vms || freebsd */
-#if defined(BC31) || defined(_WIN32)
-#include <stdarg.h>
-#else /* BC31 || _WIN32 */
-#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 */
-
-#if defined( DOS ) || defined( _WIN32 )
-#include "msdos.h"
-#endif /* DOS */
-
-#include <string.h>
-
-#include "lber.h"
+#include <ac/stdarg.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
+#include "lber-int.h"
#ifdef LDAP_DEBUG
int lber_debug;
unsigned char xbyte;
unsigned long tag;
char *tagp;
- int i;
+ unsigned int i;
if ( ber_read( ber, (char *) &xbyte, 1 ) != 1 )
return( LBER_DEFAULT );
if ( ber_read( ber, (char *) &netlen + diff, noctets )
!= noctets )
return( LBER_DEFAULT );
- *len = LBER_NTOHL( netlen );
+ *len = AC_NTOHL( netlen );
} else {
*len = lc;
}
sign = (0x80 & *(p+diff) );
if ( sign && len < sizeof(long) ) {
for ( i = 0; i < diff; i++ ) {
- *(p+i) = 0xff;
+ *(p+i) = (unsigned char) 0xff;
}
}
- *num = LBER_NTOHL( netnum );
+ *num = AC_NTOHL( netnum );
return( len );
}
if ( (tag = ber_skip_tag( ber, &len )) == 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 );
else
return( tag );
if ( datalen > (*len - 1) )
return( LBER_DEFAULT );
- if ( ber_read( ber, buf, datalen ) != datalen )
+ if ( (unsigned long) ber_read( ber, buf, datalen ) != datalen )
return( LBER_DEFAULT );
buf[datalen] = '\0';
if ( (*buf = (char *) malloc( (size_t)datalen + 1 )) == NULL )
return( LBER_DEFAULT );
- if ( ber_read( ber, *buf, datalen ) != datalen )
+ if ( (unsigned long) ber_read( ber, *buf, datalen ) != datalen )
return( LBER_DEFAULT );
(*buf)[datalen] = '\0';
if ( ((*bv)->bv_val = (char *) malloc( (size_t)len + 1 )) == NULL )
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 );
((*bv)->bv_val)[len] = '\0';
(*bv)->bv_len = len;
if ( ber_read( ber, (char *)&unusedbits, 1 ) != 1 )
return( LBER_DEFAULT );
- if ( ber_read( ber, *buf, datalen ) != datalen )
+ if ( (unsigned long) ber_read( ber, *buf, datalen ) != datalen )
return( LBER_DEFAULT );
*blen = datalen * 8 - unusedbits;
*last = ber->ber_ptr + *len;
if ( *last == ber->ber_ptr ) {
+#ifdef LBER_END_SEQORSET
+ return( LBER_END_SEQORSET );
+#else
return( LBER_DEFAULT );
+#endif
}
return( ber_peek_tag( ber, len ) );
ber_next_element( BerElement *ber, unsigned long *len, char *last )
{
if ( ber->ber_ptr == last ) {
+#ifdef LBER_END_SEQORSET
+ return( LBER_END_SEQORSET );
+#else
return( LBER_DEFAULT );
+#endif
}
return( ber_peek_tag( ber, len ) );
/* VARARGS */
unsigned long
-ber_scanf(
-#if defined( MACOS ) || defined( BC31 ) || defined( _WIN32 )
- BerElement *ber, char *fmt, ... )
+ber_scanf
+#if HAVE_STDARG
+ ( BerElement *ber, char *fmt, ... )
#else
- va_alist )
+ ( va_alist )
va_dcl
#endif
{
va_list ap;
-#if !defined( MACOS ) && !defined( BC31 ) && !defined( _WIN32 )
+#ifndef HAVE_STDARG
BerElement *ber;
char *fmt;
#endif
char *s, **ss, ***sss;
struct berval ***bv, **bvp, *bval;
int *i, j;
- long *l, rc, tag;
- unsigned long len;
+ long *l;
+ unsigned long rc, tag, len;
-#if defined( MACOS ) || defined( BC31 ) || defined( _WIN32 )
+#ifdef HAVE_STDARG
va_start( ap, fmt );
#else
va_start( ap );
*sss = NULL;
j = 0;
for ( tag = ber_first_element( ber, &len, &last );
- tag != LBER_DEFAULT && rc != LBER_DEFAULT;
- tag = ber_next_element( ber, &len, last ) ) {
+ tag != LBER_DEFAULT &&
+#ifdef LDAP_END_SEQORSET
+ tag != LBER_END_SEQORSET &&
+#endif
+ rc != LBER_DEFAULT;
+ tag = ber_next_element( ber, &len, last ) )
+ {
if ( *sss == NULL ) {
*sss = (char **) malloc(
2 * sizeof(char *) );
rc = ber_get_stringa( ber, &((*sss)[j]) );
j++;
}
+#ifdef LDAP_END_SEQORSET
+ if (rc != LBER_DEFAULT &&
+ tag != LBER_END_SEQORSET )
+ {
+ rc = LBER_DEFAULT;
+ }
+#endif
if ( j > 0 )
(*sss)[j] = NULL;
break;
*bv = NULL;
j = 0;
for ( tag = ber_first_element( ber, &len, &last );
- tag != LBER_DEFAULT && rc != LBER_DEFAULT;
- tag = ber_next_element( ber, &len, last ) ) {
+ tag != LBER_DEFAULT &&
+#ifdef LDAP_END_SEQORSET
+ tag != LBER_END_SEQORSET &&
+#endif
+ rc != LBER_DEFAULT;
+ tag = ber_next_element( ber, &len, last ) )
+ {
if ( *bv == NULL ) {
*bv = (struct berval **) malloc(
2 * sizeof(struct berval *) );
rc = ber_get_stringal( ber, &((*bv)[j]) );
j++;
}
+#ifdef LDAP_END_SEQORSET
+ if (rc != LBER_DEFAULT &&
+ tag != LBER_END_SEQORSET )
+ {
+ rc = LBER_DEFAULT;
+ }
+#endif
if ( j > 0 )
(*bv)[j] = NULL;
break;
break;
default:
-#ifndef NO_USERINTERFACE
+#ifdef LDAP_LIBUI
fprintf( stderr, "unknown fmt %c\n", *fmt );
-#endif /* NO_USERINTERFACE */
+#endif /* LDAP_LIBUI */
rc = LBER_DEFAULT;
break;
}
void
ber_bvfree( struct berval *bv )
{
+#ifdef LBER_ASSERT
+ assert(bv != NULL); /* bv damn better point to something */
+#endif
if ( bv->bv_val != NULL )
free( bv->bv_val );
free( (char *) bv );
{
int i;
+#ifdef LBER_ASSERT
+ assert(bv != NULL); /* bv damn better point to something */
+#endif
for ( i = 0; bv[i] != NULL; i++ )
ber_bvfree( bv[i] );
free( (char *) bv );
== 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 ) {
+ free( new );
return( NULL );
}
+
SAFEMEMCPY( new->bv_val, bv->bv_val, (size_t) bv->bv_len );
new->bv_val[bv->bv_len] = '\0';
new->bv_len = bv->bv_len;