version 1.60, 2001/05/06 17:07:24
|
version 1.63, 2001/11/04 16:50:16
|
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.59 2001/01/17 16:08:44 gwilliams Exp $ */ |
/* $OpenLDAP: pkg/ldap/libraries/liblber/decode.c,v 1.62 2001/11/03 21:07:41 kurt Exp $ */ |
/* |
/* |
* Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. |
* Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. |
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file |
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file |
Line 42 ber_get_tag( BerElement *ber )
|
Line 42 ber_get_tag( BerElement *ber )
|
unsigned int i; |
unsigned int i; |
|
|
assert( ber != NULL ); |
assert( ber != NULL ); |
assert( BER_VALID( ber ) ); |
assert( LBER_VALID( ber ) ); |
|
|
if ( ber_read( ber, (char *) &xbyte, 1 ) != 1 ) { |
if ( ber_read( ber, (char *) &xbyte, 1 ) != 1 ) { |
return LBER_DEFAULT; |
return LBER_DEFAULT; |
Line 85 ber_skip_tag( BerElement *ber, ber_len_t
|
Line 85 ber_skip_tag( BerElement *ber, ber_len_t
|
|
|
assert( ber != NULL ); |
assert( ber != NULL ); |
assert( len != NULL ); |
assert( len != NULL ); |
assert( BER_VALID( ber ) ); |
assert( LBER_VALID( ber ) ); |
|
|
/* |
/* |
* Any ber element looks like this: tag length contents. |
* Any ber element looks like this: tag length contents. |
Line 175 ber_getnint(
|
Line 175 ber_getnint(
|
|
|
assert( ber != NULL ); |
assert( ber != NULL ); |
assert( num != NULL ); |
assert( num != NULL ); |
assert( BER_VALID( ber ) ); |
assert( LBER_VALID( ber ) ); |
|
|
/* |
/* |
* The tag and length have already been stripped off. We should |
* The tag and length have already been stripped off. We should |
Line 221 ber_get_int(
|
Line 221 ber_get_int(
|
ber_len_t len; |
ber_len_t len; |
|
|
assert( ber != NULL ); |
assert( ber != NULL ); |
assert( BER_VALID( ber ) ); |
assert( LBER_VALID( ber ) ); |
|
|
if ( (tag = ber_skip_tag( ber, &len )) == LBER_DEFAULT ) { |
if ( (tag = ber_skip_tag( ber, &len )) == LBER_DEFAULT ) { |
return LBER_DEFAULT; |
return LBER_DEFAULT; |
Line 252 ber_get_stringb(
|
Line 252 ber_get_stringb(
|
ber_tag_t tag; |
ber_tag_t tag; |
|
|
assert( ber != NULL ); |
assert( ber != NULL ); |
assert( BER_VALID( ber ) ); |
assert( LBER_VALID( ber ) ); |
|
|
if ( (tag = ber_skip_tag( ber, &datalen )) == LBER_DEFAULT ) { |
if ( (tag = ber_skip_tag( ber, &datalen )) == LBER_DEFAULT ) { |
return LBER_DEFAULT; |
return LBER_DEFAULT; |
Line 282 ber_get_stringa( BerElement *ber, char *
|
Line 282 ber_get_stringa( BerElement *ber, char *
|
assert( ber != NULL ); |
assert( ber != NULL ); |
assert( buf != NULL ); |
assert( buf != NULL ); |
|
|
assert( BER_VALID( ber ) ); |
assert( LBER_VALID( ber ) ); |
|
|
if ( (tag = ber_skip_tag( ber, &datalen )) == LBER_DEFAULT ) { |
if ( (tag = ber_skip_tag( ber, &datalen )) == LBER_DEFAULT ) { |
*buf = NULL; |
*buf = NULL; |
Line 312 ber_get_stringal( BerElement *ber, struc
|
Line 312 ber_get_stringal( BerElement *ber, struc
|
assert( ber != NULL ); |
assert( ber != NULL ); |
assert( bv != NULL ); |
assert( bv != NULL ); |
|
|
assert( BER_VALID( ber ) ); |
assert( LBER_VALID( ber ) ); |
|
|
if ( (tag = ber_skip_tag( ber, &len )) == LBER_DEFAULT ) { |
if ( (tag = ber_skip_tag( ber, &len )) == LBER_DEFAULT ) { |
*bv = NULL; |
*bv = NULL; |
Line 363 ber_get_bitstringa(
|
Line 363 ber_get_bitstringa(
|
assert( buf != NULL ); |
assert( buf != NULL ); |
assert( blen != NULL ); |
assert( blen != NULL ); |
|
|
assert( BER_VALID( ber ) ); |
assert( LBER_VALID( ber ) ); |
|
|
if ( (tag = ber_skip_tag( ber, &datalen )) == LBER_DEFAULT ) { |
if ( (tag = ber_skip_tag( ber, &datalen )) == LBER_DEFAULT ) { |
*buf = NULL; |
*buf = NULL; |
Line 398 ber_get_null( BerElement *ber )
|
Line 398 ber_get_null( BerElement *ber )
|
ber_tag_t tag; |
ber_tag_t tag; |
|
|
assert( ber != NULL ); |
assert( ber != NULL ); |
assert( BER_VALID( ber ) ); |
assert( LBER_VALID( ber ) ); |
|
|
if ( (tag = ber_skip_tag( ber, &len )) == LBER_DEFAULT ) { |
if ( (tag = ber_skip_tag( ber, &len )) == LBER_DEFAULT ) { |
return LBER_DEFAULT; |
return LBER_DEFAULT; |
Line 422 ber_get_boolean(
|
Line 422 ber_get_boolean(
|
assert( ber != NULL ); |
assert( ber != NULL ); |
assert( boolval != NULL ); |
assert( boolval != NULL ); |
|
|
assert( BER_VALID( ber ) ); |
assert( LBER_VALID( ber ) ); |
|
|
rc = ber_get_int( ber, &longbool ); |
rc = ber_get_int( ber, &longbool ); |
*boolval = longbool; |
*boolval = longbool; |
Line 465 ber_next_element(
|
Line 465 ber_next_element(
|
assert( len != NULL ); |
assert( len != NULL ); |
assert( last != NULL ); |
assert( last != NULL ); |
|
|
assert( BER_VALID( ber ) ); |
assert( LBER_VALID( ber ) ); |
|
|
if ( ber->ber_ptr == last ) { |
if ( ber->ber_ptr == last ) { |
return LBER_DEFAULT; |
return LBER_DEFAULT; |
Line 497 ber_scanf ( BerElement *ber,
|
Line 497 ber_scanf ( BerElement *ber,
|
assert( ber != NULL ); |
assert( ber != NULL ); |
assert( fmt != NULL ); |
assert( fmt != NULL ); |
|
|
assert( BER_VALID( ber ) ); |
assert( LBER_VALID( ber ) ); |
|
|
fmt_reset = fmt; |
fmt_reset = fmt; |
|
|
Line 590 ber_scanf ( BerElement *ber,
|
Line 590 ber_scanf ( BerElement *ber,
|
tag != LBER_DEFAULT && rc != LBER_DEFAULT; |
tag != LBER_DEFAULT && rc != LBER_DEFAULT; |
tag = ber_next_element( ber, &len, last ) ) |
tag = ber_next_element( ber, &len, last ) ) |
{ |
{ |
|
void *save = *sss; |
|
|
*sss = (char **) LBER_REALLOC( *sss, |
*sss = (char **) LBER_REALLOC( *sss, |
(j + 2) * sizeof(char *) ); |
(j + 2) * sizeof(char *) ); |
|
|
|
if( *sss == NULL ) { |
|
LBER_FREE( save ); |
|
rc = LBER_DEFAULT; |
|
goto breakout; |
|
} |
|
|
rc = ber_get_stringa( ber, &((*sss)[j]) ); |
rc = ber_get_stringa( ber, &((*sss)[j]) ); |
j++; |
j++; |
} |
} |
Line 608 ber_scanf ( BerElement *ber,
|
Line 616 ber_scanf ( BerElement *ber,
|
tag != LBER_DEFAULT && rc != LBER_DEFAULT; |
tag != LBER_DEFAULT && rc != LBER_DEFAULT; |
tag = ber_next_element( ber, &len, last ) ) |
tag = ber_next_element( ber, &len, last ) ) |
{ |
{ |
|
void *save = *bv; |
|
|
*bv = (struct berval **) LBER_REALLOC( *bv, |
*bv = (struct berval **) LBER_REALLOC( *bv, |
(j + 2) * sizeof(struct berval *) ); |
(j + 2) * sizeof(struct berval *) ); |
|
|
|
if( *bv == NULL ) { |
|
LBER_FREE( save ); |
|
rc = LBER_DEFAULT; |
|
goto breakout; |
|
} |
|
|
rc = ber_get_stringal( ber, &((*bv)[j]) ); |
rc = ber_get_stringal( ber, &((*bv)[j]) ); |
j++; |
j++; |
} |
} |
Line 649 ber_scanf ( BerElement *ber,
|
Line 665 ber_scanf ( BerElement *ber,
|
} |
} |
} |
} |
|
|
|
breakout: |
va_end( ap ); |
va_end( ap ); |
|
|
if ( rc == LBER_DEFAULT ) { |
if ( rc == LBER_DEFAULT ) { |