unsigned long *len )
{
unsigned long tag;
- BerElement *ber = ber_dup( ber_in );
+ BerElement *ber;
+
+ assert( ber_in != NULL );
+
+ ber = ber_dup( ber_in );
if( ber == NULL ) {
return LBER_ERROR;
tag = ber_skip_tag( ber, len );
- ber_free( ber, 1 );
+ ber_free( ber, 0 );
return( tag );
}
{
unsigned long tag, len;
+ assert( ber != NULL );
+
if ( (tag = ber_skip_tag( ber, &len )) == LBER_DEFAULT )
return( LBER_DEFAULT );
char *transbuf;
#endif /* STR_TRANSLATION */
+ assert( ber != NULL );
+
if ( (tag = ber_skip_tag( ber, &datalen )) == LBER_DEFAULT )
return( LBER_DEFAULT );
if ( datalen > (*len - 1) )
{
unsigned long datalen, tag;
+ assert( ber != NULL );
+ assert( buf != NULL );
+
if ( (tag = ber_skip_tag( ber, &datalen )) == LBER_DEFAULT ) {
*buf = NULL;
return( LBER_DEFAULT );
{
unsigned long len, tag;
+ assert( ber != NULL );
+ assert( bv != NULL );
+
if ( (tag = ber_skip_tag( ber, &len )) == LBER_DEFAULT ) {
*bv = NULL;
return( LBER_DEFAULT );
unsigned long datalen, tag;
unsigned char unusedbits;
+ assert( ber != NULL );
+ assert( buf != NULL );
+ assert( blen != NULL );
+
if ( (tag = ber_skip_tag( ber, &datalen )) == LBER_DEFAULT ) {
*buf = NULL;
return( LBER_DEFAULT );
{
unsigned long len, tag;
+ assert( ber != NULL );
+
if ( (tag = ber_skip_tag( ber, &len )) == LBER_DEFAULT )
return( LBER_DEFAULT );
long longbool;
int rc;
+ assert( ber != NULL );
+ assert( boolval != NULL );
+
rc = ber_get_int( ber, &longbool );
*boolval = longbool;
unsigned long
ber_first_element( BerElement *ber, unsigned long *len, char **last )
{
+ assert( ber != NULL );
+ assert( len != NULL );
+ assert( last != NULL );
+
/* skip the sequence header, use the len to mark where to stop */
if ( ber_skip_tag( ber, len ) == LBER_DEFAULT ) {
*last = NULL;
unsigned long
ber_next_element( BerElement *ber, unsigned long *len, char *last )
{
+ assert( ber != NULL );
+ assert( len != NULL );
+ assert( last != NULL );
+
if ( ber->ber_ptr == last ) {
#ifdef LBER_END_SEQORSET
return( LBER_END_SEQORSET );
long *l;
unsigned long rc, tag, len;
- assert( ber != NULL );
-
#ifdef HAVE_STDARG
va_start( ap, fmt );
#else
fmt_reset = fmt;
- if ( ber->ber_debug ) {
- ber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug,
- "ber_scanf fmt (%s) ber:\n", fmt );
- ber_log_dump( LDAP_DEBUG_BER, ber->ber_debug, ber, 1 );
- }
+ ber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug,
+ "ber_scanf fmt (%s) ber:\n", fmt );
+ ber_log_dump( LDAP_DEBUG_BER, ber->ber_debug, ber, 1 );
for ( rc = 0; *fmt && rc != LBER_DEFAULT; fmt++ ) {
/* When this is modified, remember to update
case 'l': /* length of next item */
l = va_arg( ap, long * );
- rc = ber_peek_tag( ber, (unsigned long *)l );
+ rc = ber_peek_tag( ber, l );
break;
case 'n': /* null */
case 's': /* octet string - in a buffer */
s = va_arg( ap, char * );
l = va_arg( ap, long * );
- rc = ber_get_stringb( ber, s, (unsigned long *)l );
+ rc = ber_get_stringb( ber, s, l );
break;
case 'o': /* octet string in a supplied berval */
case 'B': /* bit string - allocate storage as needed */
ss = va_arg( ap, char ** );
l = va_arg( ap, long * ); /* for length, in bits */
- rc = ber_get_bitstringa( ber, ss, (unsigned long *)l );
+ rc = ber_get_bitstringa( ber, ss, l );
break;
case 't': /* tag of next item */
- i = va_arg( ap, int * );
- *i = rc = ber_peek_tag( ber, &len );
+ l = va_arg( ap, long * );
+ *l = rc = ber_peek_tag( ber, &len );
break;
case 'T': /* skip tag of next item */
- i = va_arg( ap, int * );
- *i = rc = ber_skip_tag( ber, &len );
+ l = va_arg( ap, long * );
+ *l = rc = ber_skip_tag( ber, &len );
break;
case 'v': /* sequence of strings */
break;
case 'b': /* boolean */
- case 't': /* tag of next item */
- case 'T': /* skip tag of next item */
(void) va_arg( ap, int * );
break;
case 's': /* octet string - in a buffer */
(void) va_arg( ap, char * );
- /* Fall through */
+ (void) va_arg( ap, long * );
+ break;
+
case 'e': /* enumerated */
case 'i': /* int */
case 'l': /* length of next item */
+ case 't': /* tag of next item */
+ case 'T': /* skip tag of next item */
(void) va_arg( ap, long * );
break;
case 'o': /* octet string in a supplied berval */
bval = va_arg( ap, struct berval * );
- if ( bval->bv_val ) {
+ if ( bval->bv_val != NULL ) {
free( bval->bv_val );
bval->bv_val = NULL;
}
}
break;
-#if 0 /* No action for these format characters */
case 'n': /* null */
case 'x': /* skip the next element - whatever it is */
case '{': /* begin sequence */
case '[': /* begin set */
case '}': /* end sequence */
case ']': /* end set */
-#endif
+ break;
+ default:
+ /* format should be good */
+ assert( 0 );
}
}