version 1.42, 1999/11/08 18:36:30
|
version 1.43, 1999/11/26 22:32:20
|
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.39 1999/10/19 16:57:39 kdz Exp $ */ |
/* $OpenLDAP: pkg/ldap/libraries/liblber/decode.c,v 1.42 1999/11/08 18:36:30 kurt Exp $ */ |
/* |
/* |
* Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved. |
* Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved. |
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file |
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file |
Line 79 ber_skip_tag( BerElement *ber, ber_len_t
|
Line 79 ber_skip_tag( BerElement *ber, ber_len_t
|
{ |
{ |
ber_tag_t tag; |
ber_tag_t tag; |
unsigned char lc; |
unsigned char lc; |
ber_len_t noctets; |
ber_len_t i, noctets; |
int diff; |
unsigned char netlen[sizeof(ber_len_t)]; |
ber_len_t netlen; |
|
|
|
assert( ber != NULL ); |
assert( ber != NULL ); |
assert( len != NULL ); |
assert( len != NULL ); |
Line 111 ber_skip_tag( BerElement *ber, ber_len_t
|
Line 110 ber_skip_tag( BerElement *ber, ber_len_t
|
* greater than what we can hold in a ber_len_t. |
* greater than what we can hold in a ber_len_t. |
*/ |
*/ |
|
|
*len = netlen = 0; |
*len = 0; |
|
|
if ( ber_read( ber, (char *) &lc, 1 ) != 1 ) |
if ( ber_read( ber, (char *) &lc, 1 ) != 1 ) |
return( LBER_DEFAULT ); |
return( LBER_DEFAULT ); |
|
|
if ( lc & 0x80U ) { |
if ( lc & 0x80U ) { |
noctets = (lc & 0x7fU); |
noctets = (lc & 0x7fU); |
if ( noctets > sizeof(ber_len_t) ) |
|
|
if ( noctets > sizeof(ber_len_t) ) { |
return( LBER_DEFAULT ); |
return( LBER_DEFAULT ); |
diff = sizeof(ber_len_t) - noctets; |
} |
if ( (unsigned) ber_read( ber, (char *) &netlen + diff, noctets ) |
|
!= noctets ) |
if( (unsigned) ber_read( ber, netlen, noctets ) != noctets ) { |
return( LBER_DEFAULT ); |
return( LBER_DEFAULT ); |
*len = LBER_LEN_NTOH( netlen ); |
} |
|
|
|
for( i = 0; i < noctets; i++ ) { |
|
*len <<= 8; |
|
*len |= netlen[i]; |
|
} |
|
|
} else { |
} else { |
*len = lc; |
*len = lc; |
} |
} |