return LBER_DEFAULT;
}
- if( (unsigned) ber_read( ber, netlen, noctets ) != noctets ) {
+ if( (unsigned) ber_read( ber, (char *) netlen, noctets ) != noctets ) {
return LBER_DEFAULT;
}
char *last, *orig;
struct berval bv, *bvp = NULL;
+ /* For rewinding, just like ber_peek_tag() */
orig = b->ber->ber_ptr;
+ tag = b->ber->ber_tag;
- tag = ber_first_element( b->ber, &len, &last );
- if ( tag != LBER_DEFAULT ) {
+ if ( ber_first_element( b->ber, &len, &last ) != LBER_DEFAULT ) {
for ( ; b->ber->ber_ptr < last; i++ )
{
- tag = ber_skip_tag( b->ber, &len );
- if (tag == LBER_DEFAULT) break;
+ if (ber_skip_tag( b->ber, &len ) == LBER_DEFAULT) break;
b->ber->ber_ptr += len;
+ b->ber->ber_tag = *(unsigned char *)b->ber->ber_ptr;
}
}
/* Allocate the result vector */
switch (b->choice) {
case ChArray:
- *b->res.c = LBER_MALLOC( (n+1) * sizeof( char * ));
+ *b->res.c = ber_memalloc_x( (n+1) * sizeof( char * ), b->ber->ber_memctx);
if ( *b->res.c == NULL )
return LBER_DEFAULT;
(*b->res.c)[n] = NULL;
break;
case BvArray:
- *b->res.ba = LBER_MALLOC( (n+1) * sizeof( struct berval ));
+ *b->res.ba = ber_memalloc_x( (n+1) * sizeof( struct berval ), b->ber->ber_memctx);
if ( *b->res.ba == NULL )
return LBER_DEFAULT;
(*b->res.ba)[n].bv_val = NULL;
break;
case BvVec:
- *b->res.bv = LBER_MALLOC( (n+1) * sizeof( struct berval *));
+ *b->res.bv = ber_memalloc_x( (n+1) * sizeof( struct berval *), b->ber->ber_memctx);
if ( *b->res.bv == NULL )
return LBER_DEFAULT;
(*b->res.bv)[n] = NULL;
break;
case BvOff:
- *b->res.ba = LBER_MALLOC( (n+1) * b->siz );
+ *b->res.ba = ber_memalloc_x( (n+1) * b->siz, b->ber->ber_memctx );
if ( *b->res.ba == NULL )
return LBER_DEFAULT;
((struct berval *)((long)(*b->res.ba) + n*b->siz +
break;
}
b->ber->ber_ptr = orig;
+ b->ber->ber_tag = tag;
ber_skip_tag( b->ber, &len );
for (n=0; n<i; n++)
(*b->res.ba)[n] = bv;
break;
case BvVec:
- bvp = LBER_MALLOC( sizeof( struct berval ));
+ bvp = ber_memalloc_x( sizeof( struct berval ), b->ber->ber_memctx);
if ( !bvp ) {
LBER_FREE(bv.bv_val);
goto nomem;
case BvArray: LBER_FREE((*b->res.ba)[n].bv_val); break;
case BvVec: LBER_FREE((*b->res.bv)[n]->bv_val);
LBER_FREE((*b->res.bv)[n]); break;
+ default: break;
}
}
}
}
if ( alloc ) {
- if ( (bv->bv_val = (char *) LBER_MALLOC( bv->bv_len + 1 )) == NULL ) {
+ if ( (bv->bv_val = (char *) ber_memalloc_x( bv->bv_len + 1, ber->ber_memctx )) == NULL ) {
return LBER_DEFAULT;
}
assert( ber != NULL );
assert( bv != NULL );
- *bv = (struct berval *) LBER_MALLOC( sizeof(struct berval) );
+ *bv = (struct berval *) ber_memalloc_x( sizeof(struct berval), ber->ber_memctx );
if ( *bv == NULL ) {
return LBER_DEFAULT;
}
}
--datalen;
- if ( (*buf = (char *) LBER_MALLOC( datalen )) == NULL ) {
+ if ( (*buf = (char *) ber_memalloc_x( datalen, ber->ber_memctx )) == NULL ) {
return LBER_DEFAULT;
}