version 1.116, 2009/02/10 11:44:12
|
version 1.117, 2009/02/10 20:29:56
|
Line 143 ber_skip_tag( BerElement *ber, ber_len_t
|
Line 143 ber_skip_tag( BerElement *ber, ber_len_t
|
{ |
{ |
ber_tag_t tag; |
ber_tag_t tag; |
unsigned char lc; |
unsigned char lc; |
char *save; |
ber_len_t i, noctets; |
|
unsigned char netlen[sizeof(ber_len_t)]; |
|
|
assert( ber != NULL ); |
assert( ber != NULL ); |
assert( len != NULL ); |
assert( len != NULL ); |
assert( LBER_VALID( ber ) ); |
assert( LBER_VALID( ber ) ); |
|
|
save = ber->ber_ptr; |
|
|
|
/* |
/* |
* Any ber element looks like this: tag length contents. |
* Any ber element looks like this: tag length contents. |
* Assuming everything's ok, we return the tag byte (we |
* Assuming everything's ok, we return the tag byte (we |
Line 183 ber_skip_tag( BerElement *ber, ber_len_t
|
Line 182 ber_skip_tag( BerElement *ber, ber_len_t
|
} |
} |
|
|
if ( lc & 0x80U ) { |
if ( lc & 0x80U ) { |
ber_len_t i, noctets; |
|
unsigned char netlen[sizeof(ber_len_t)]; |
|
|
|
noctets = (lc & 0x7fU); |
noctets = (lc & 0x7fU); |
|
|
if ( noctets > sizeof(ber_len_t) ) { |
if ( noctets > sizeof(ber_len_t) ) { |
Line 206 ber_skip_tag( BerElement *ber, ber_len_t
|
Line 202 ber_skip_tag( BerElement *ber, ber_len_t
|
} |
} |
|
|
/* BER element should have enough data left */ |
/* BER element should have enough data left */ |
if( *len > (ber_len_t) (ber_pvt_ber_remaining( ber ) + ber->ber_ptr - save) ) { |
if( *len > (ber_len_t) ber_pvt_ber_remaining( ber ) ) { |
return LBER_DEFAULT; |
return LBER_DEFAULT; |
} |
} |
ber->ber_tag = *(unsigned char *)ber->ber_ptr; |
ber->ber_tag = *(unsigned char *)ber->ber_ptr; |