version 1.50, 2000/05/13 21:08:25
|
version 1.52, 2000/06/05 17:22:22
|
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.49 2000/05/13 00:36:07 kurt Exp $ */ |
/* $OpenLDAP: pkg/ldap/libraries/liblber/decode.c,v 1.51 2000/05/14 01:38:27 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 233 ber_get_enum(
|
Line 233 ber_get_enum(
|
BerElement *ber, |
BerElement *ber, |
ber_int_t *num ) |
ber_int_t *num ) |
{ |
{ |
ber_get_int( ber, num ); |
return ber_get_int( ber, num ); |
} |
} |
|
|
ber_tag_t |
ber_tag_t |
Line 245 ber_get_stringb(
|
Line 245 ber_get_stringb(
|
ber_len_t datalen; |
ber_len_t datalen; |
ber_tag_t tag; |
ber_tag_t tag; |
|
|
#ifdef STR_TRANSLATION |
|
char *transbuf; |
|
#endif /* STR_TRANSLATION */ |
|
|
|
assert( ber != NULL ); |
assert( ber != NULL ); |
assert( BER_VALID( ber ) ); |
assert( BER_VALID( ber ) ); |
|
|
Line 262 ber_get_stringb(
|
Line 258 ber_get_stringb(
|
|
|
buf[datalen] = '\0'; |
buf[datalen] = '\0'; |
|
|
#ifdef STR_TRANSLATION |
|
if ( datalen > 0 && ( ber->ber_options & LBER_TRANSLATE_STRINGS ) != 0 |
|
&& ber->ber_decode_translate_proc ) { |
|
transbuf = buf; |
|
++datalen; |
|
if ( (*(ber->ber_decode_translate_proc))( &transbuf, &datalen, |
|
0 ) != 0 ) { |
|
return( LBER_DEFAULT ); |
|
} |
|
if ( datalen > *len ) { |
|
LBER_FREE( transbuf ); |
|
return( LBER_DEFAULT ); |
|
} |
|
SAFEMEMCPY( buf, transbuf, datalen ); |
|
LBER_FREE( transbuf ); |
|
--datalen; |
|
} |
|
#endif /* STR_TRANSLATION */ |
|
|
|
*len = datalen; |
*len = datalen; |
return( tag ); |
return( tag ); |
} |
} |
Line 311 ber_get_stringa( BerElement *ber, char *
|
Line 288 ber_get_stringa( BerElement *ber, char *
|
} |
} |
(*buf)[datalen] = '\0'; |
(*buf)[datalen] = '\0'; |
|
|
#ifdef STR_TRANSLATION |
|
if ( datalen > 0 && ( ber->ber_options & LBER_TRANSLATE_STRINGS ) != 0 |
|
&& ber->ber_decode_translate_proc ) { |
|
++datalen; |
|
if ( (*(ber->ber_decode_translate_proc))( buf, &datalen, 1 ) |
|
!= 0 ) { |
|
LBER_FREE( *buf ); |
|
*buf = NULL; |
|
return( LBER_DEFAULT ); |
|
} |
|
} |
|
#endif /* STR_TRANSLATION */ |
|
|
|
return( tag ); |
return( tag ); |
} |
} |
|
|
Line 360 ber_get_stringal( BerElement *ber, struc
|
Line 324 ber_get_stringal( BerElement *ber, struc
|
((*bv)->bv_val)[len] = '\0'; |
((*bv)->bv_val)[len] = '\0'; |
(*bv)->bv_len = len; |
(*bv)->bv_len = len; |
|
|
#ifdef STR_TRANSLATION |
|
if ( len > 0 && ( ber->ber_options & LBER_TRANSLATE_STRINGS ) != 0 |
|
&& ber->ber_decode_translate_proc ) { |
|
++len; |
|
if ( (*(ber->ber_decode_translate_proc))( &((*bv)->bv_val), |
|
&len, 1 ) != 0 ) { |
|
ber_bvfree( *bv ); |
|
*bv = NULL; |
|
return( LBER_DEFAULT ); |
|
} |
|
(*bv)->bv_len = len - 1; |
|
} |
|
#endif /* STR_TRANSLATION */ |
|
|
|
return( tag ); |
return( tag ); |
} |
} |
|
|
Line 778 ber_scanf ( BerElement *ber,
|
Line 728 ber_scanf ( BerElement *ber,
|
|
|
return( rc ); |
return( rc ); |
} |
} |
|
|
|
|
#ifdef STR_TRANSLATION |
|
void |
|
ber_set_string_translators( BerElement *ber, BERTranslateProc encode_proc, |
|
BERTranslateProc decode_proc ) |
|
{ |
|
assert( ber != NULL ); |
|
assert( BER_VALID( ber ) ); |
|
|
|
ber->ber_encode_translate_proc = encode_proc; |
|
ber->ber_decode_translate_proc = decode_proc; |
|
} |
|
#endif /* STR_TRANSLATION */ |
|