version 1.117, 2009/02/10 20:29:56
|
version 1.118, 2009/07/29 13:06:28
|
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.115 2009/01/21 23:40:19 kurt Exp $ */ |
/* $OpenLDAP: pkg/ldap/libraries/liblber/decode.c,v 1.117 2009/02/10 20:29:56 hyc Exp $ */ |
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
* |
* |
* Copyright 1998-2009 The OpenLDAP Foundation. |
* Copyright 1998-2009 The OpenLDAP Foundation. |
Line 146 ber_skip_tag( BerElement *ber, ber_len_t
|
Line 146 ber_skip_tag( BerElement *ber, ber_len_t
|
ber_len_t i, noctets; |
ber_len_t i, noctets; |
unsigned char netlen[sizeof(ber_len_t)]; |
unsigned char netlen[sizeof(ber_len_t)]; |
|
|
assert( ber != NULL ); |
|
assert( len != NULL ); |
assert( len != NULL ); |
assert( LBER_VALID( ber ) ); |
|
|
|
/* |
/* |
* Any ber element looks like this: tag length contents. |
* Any ber element looks like this: tag length contents. |
Line 240 ber_getnint(
|
Line 238 ber_getnint(
|
{ |
{ |
unsigned char buf[sizeof(ber_int_t)]; |
unsigned char buf[sizeof(ber_int_t)]; |
|
|
assert( ber != NULL ); |
|
assert( num != NULL ); |
assert( num != NULL ); |
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 288 ber_get_int(
|
Line 284 ber_get_int(
|
ber_tag_t tag; |
ber_tag_t tag; |
ber_len_t len; |
ber_len_t len; |
|
|
assert( ber != NULL ); |
|
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 319 ber_get_stringb(
|
Line 312 ber_get_stringb(
|
ber_len_t datalen; |
ber_len_t datalen; |
ber_tag_t tag; |
ber_tag_t tag; |
|
|
assert( ber != NULL ); |
|
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 487 ber_get_stringbv( BerElement *ber, struc
|
Line 477 ber_get_stringbv( BerElement *ber, struc
|
{ |
{ |
ber_tag_t tag; |
ber_tag_t tag; |
|
|
assert( ber != NULL ); |
|
assert( bv != NULL ); |
assert( bv != NULL ); |
|
|
assert( LBER_VALID( ber ) ); |
|
|
|
if ( (tag = ber_skip_tag( ber, &bv->bv_len )) == LBER_DEFAULT ) { |
if ( (tag = ber_skip_tag( ber, &bv->bv_len )) == LBER_DEFAULT ) { |
bv->bv_val = NULL; |
bv->bv_val = NULL; |
return LBER_DEFAULT; |
return LBER_DEFAULT; |
Line 531 ber_get_stringbv_null( BerElement *ber,
|
Line 518 ber_get_stringbv_null( BerElement *ber,
|
{ |
{ |
ber_tag_t tag; |
ber_tag_t tag; |
|
|
assert( ber != NULL ); |
|
assert( bv != NULL ); |
assert( bv != NULL ); |
|
|
assert( LBER_VALID( ber ) ); |
|
|
|
if ( (tag = ber_skip_tag( ber, &bv->bv_len )) == LBER_DEFAULT ) { |
if ( (tag = ber_skip_tag( ber, &bv->bv_len )) == LBER_DEFAULT ) { |
bv->bv_val = NULL; |
bv->bv_val = NULL; |
return LBER_DEFAULT; |
return LBER_DEFAULT; |
Line 636 ber_get_bitstringa(
|
Line 620 ber_get_bitstringa(
|
ber_tag_t tag; |
ber_tag_t tag; |
unsigned char unusedbits; |
unsigned char unusedbits; |
|
|
assert( ber != NULL ); |
|
assert( buf != NULL ); |
assert( buf != NULL ); |
assert( blen != NULL ); |
assert( blen != NULL ); |
|
|
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; |
return LBER_DEFAULT; |
return LBER_DEFAULT; |
Line 676 ber_get_null( BerElement *ber )
|
Line 657 ber_get_null( BerElement *ber )
|
ber_len_t len; |
ber_len_t len; |
ber_tag_t tag; |
ber_tag_t tag; |
|
|
assert( ber != NULL ); |
|
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 699 ber_get_boolean(
|
Line 677 ber_get_boolean(
|
ber_int_t longbool; |
ber_int_t longbool; |
ber_tag_t rc; |
ber_tag_t rc; |
|
|
assert( ber != NULL ); |
|
assert( boolval != NULL ); |
assert( boolval != NULL ); |
|
|
assert( LBER_VALID( ber ) ); |
|
|
|
rc = ber_get_int( ber, &longbool ); |
rc = ber_get_int( ber, &longbool ); |
*boolval = longbool; |
*boolval = longbool; |
|
|
Line 716 ber_first_element(
|
Line 691 ber_first_element(
|
ber_len_t *len, |
ber_len_t *len, |
char **last ) |
char **last ) |
{ |
{ |
assert( ber != NULL ); |
|
assert( len != NULL ); |
|
assert( last != NULL ); |
assert( last != NULL ); |
|
|
/* skip the sequence header, use the len to mark where to stop */ |
/* skip the sequence header, use the len to mark where to stop */ |
Line 745 ber_next_element(
|
Line 718 ber_next_element(
|
assert( ber != NULL ); |
assert( ber != NULL ); |
assert( len != NULL ); |
assert( len != NULL ); |
assert( last != NULL ); |
assert( last != NULL ); |
|
|
assert( LBER_VALID( ber ) ); |
assert( LBER_VALID( ber ) ); |
|
|
if ( ber->ber_ptr >= last ) { |
if ( ber->ber_ptr >= last ) { |
Line 775 ber_scanf ( BerElement *ber,
|
Line 747 ber_scanf ( BerElement *ber,
|
|
|
assert( ber != NULL ); |
assert( ber != NULL ); |
assert( fmt != NULL ); |
assert( fmt != NULL ); |
|
|
assert( LBER_VALID( ber ) ); |
assert( LBER_VALID( ber ) ); |
|
|
fmt_reset = fmt; |
fmt_reset = fmt; |
Line 944 ber_scanf ( BerElement *ber,
|
Line 915 ber_scanf ( BerElement *ber,
|
} |
} |
|
|
va_end( ap ); |
va_end( ap ); |
|
|
if ( rc == LBER_DEFAULT ) { |
if ( rc == LBER_DEFAULT ) { |
/* |
/* |
* Error. Reclaim malloced memory that was given to the caller. |
* Error. Reclaim malloced memory that was given to the caller. |