Lines Matching refs:ber

8 /* io.c - ber general i/o routines */
67 int ber_realloc(BerElement *ber, unsigned int len);
244 ber_read( BerElement *ber, char *buf, unsigned int len )
248 nleft = (int)(ber->ber_end - ber->ber_ptr);
251 SAFEMEMCPY( buf, ber->ber_ptr, (size_t)actuallen );
253 ber->ber_ptr += actuallen;
259 ber_write( BerElement *ber, char *buf, unsigned int len, int nosos )
261 if ( nosos || ber->ber_sos == NULL ) {
262 if ( ber->ber_ptr + len > ber->ber_end ) {
263 if ( ber_realloc( ber, len ) != 0 )
266 (void) SAFEMEMCPY( ber->ber_ptr, buf, (size_t)len );
267 ber->ber_ptr += len;
270 if ( ber->ber_sos->sos_ptr + len > ber->ber_end ) {
271 if ( ber_realloc( ber, len ) != 0 )
274 (void) SAFEMEMCPY( ber->ber_sos->sos_ptr, buf, (size_t)len );
275 ber->ber_sos->sos_ptr += len;
276 ber->ber_sos->sos_clen += len;
282 ber_realloc(BerElement *ber, unsigned int len)
289 have = (ber->ber_end - ber->ber_buf) / EXBUFSIZ;
293 oldbuf = ber->ber_buf;
295 if ( ber->ber_buf == NULL ) {
296 if ( (ber->ber_buf = (char *) malloc( (size_t)total )) == NULL )
298 } else if ( (ber->ber_buf = (char *) realloc( ber->ber_buf,
302 ber->ber_end = ber->ber_buf + total;
306 * reset all the sos and ber pointers. Offsets would've been
310 if ( ber->ber_buf != oldbuf ) {
311 ber->ber_ptr = ber->ber_buf + (ber->ber_ptr - oldbuf);
313 for ( s = ber->ber_sos; s != NULLSEQORSET; s = s->sos_next ) {
315 s->sos_first = ber->ber_buf + off;
318 s->sos_ptr = ber->ber_buf + off;
326 ber_free(BerElement *ber, int freebuf)
328 if (NULL != ber) {
329 if (freebuf && ber->ber_buf != NULL)
330 free(ber->ber_buf);
331 free((char *)ber);
336 ber_flush( Sockbuf *sb, BerElement *ber, int freeit )
340 if ( ber->ber_rwptr == NULL ) {
341 ber->ber_rwptr = ber->ber_buf;
343 towrite = ber->ber_ptr - ber->ber_rwptr;
348 sb->sb_sd, ber->ber_rwptr != ber->ber_buf ? " (re-flush)"
351 lber_bprint( ber->ber_rwptr, towrite );
358 rc = SSL_write( sb->sb_ssl, (u_char *)ber->ber_buf, towrite );
364 rc = write( sb->sb_fd, ber->ber_buf, towrite );
378 rc = udp_write( sb, ber->ber_buf + nwritten,
395 if ( (rc = SSL_write( sb->sb_ssl, (u_char *)ber->ber_rwptr,
401 if ( (rc = BerWrite( sb, ber->ber_rwptr,
408 ber->ber_rwptr += rc;
412 ber_free( ber, 1 );
420 BerElement *ber;
422 if ( (ber = (BerElement *) calloc( (size_t) 1, sizeof(BerElement) )) == NULLBER )
424 ber->ber_tag = LBER_DEFAULT;
425 ber->ber_options = (char) options;
427 return( ber );
443 ber_dup( BerElement *ber )
450 *new = *ber;
476 ber_zero_init( BerElement *ber, int options )
478 (void) memset( (char *)ber, '\0', sizeof( BerElement ));
479 ber->ber_tag = LBER_DEFAULT;
480 ber->ber_options = options;
485 ber_reset( BerElement *ber, int was_writing )
488 ber->ber_end = ber->ber_ptr;
489 ber->ber_ptr = ber->ber_buf;
491 ber->ber_ptr = ber->ber_end;
494 ber->ber_rwptr = NULL;
501 ber_dump( BerElement *ber, int inout )
504 ber->ber_buf, ber->ber_ptr, ber->ber_end );
507 ber->ber_end - ber->ber_ptr );
508 lber_bprint( ber->ber_ptr, ber->ber_end - ber->ber_ptr );
511 ber->ber_ptr - ber->ber_buf );
512 lber_bprint( ber->ber_buf, ber->ber_ptr - ber->ber_buf );
570 ber_get_next( Sockbuf *sb, unsigned int *len, BerElement *ber )
583 * Any ber element looks like this: tag length contents.
599 if ( ber->ber_rwptr == NULL ) {
607 ber->ber_tag = tag;
634 ber->ber_len = *len;
638 * It's this buffer that's passed to all the other ber decoding
653 if ( (ber->ber_buf = (char *) malloc( (size_t)*len )) == NULL ) {
656 ber->ber_ptr = ber->ber_buf;
657 ber->ber_end = ber->ber_buf + *len;
658 ber->ber_rwptr = ber->ber_buf;
661 toread = (uintptr_t)ber->ber_end - (uintptr_t)ber->ber_rwptr;
663 if ( (rc = BerRead( sb, ber->ber_rwptr, (int)toread )) <= 0 ) {
668 ber->ber_rwptr += rc;
674 tag, ber->ber_len );
676 ber_dump( ber, 1 );
680 *len = ber->ber_len;
681 ber->ber_rwptr = NULL;
682 return( ber->ber_tag );