X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Fliblber%2Fio.c;h=a85f081aa49aba5627a2cf53452c911da6b48959;hb=ae471f78c32d7531c729aa88116b8b413cc200bf;hp=503735819f42a5c7737c3c69f561465b8bb8e2ae;hpb=da6d9eb0463255782f3fa70c61fd958d94c048cf;p=openldap diff --git a/libraries/liblber/io.c b/libraries/liblber/io.c index 503735819f..a85f081aa4 100644 --- a/libraries/liblber/io.c +++ b/libraries/liblber/io.c @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1998-2007 The OpenLDAP Foundation. + * Copyright 1998-2008 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -47,6 +47,25 @@ #include "lber-int.h" #include "ldap_log.h" +ber_slen_t +ber_skip_data( + BerElement *ber, + ber_len_t len ) +{ + ber_len_t actuallen, nleft; + + assert( ber != NULL ); + + assert( LBER_VALID( ber ) ); + + nleft = ber_pvt_ber_remaining( ber ); + actuallen = nleft < len ? nleft : len; + ber->ber_ptr += actuallen; + ber->ber_tag = *(unsigned char *)ber->ber_ptr; + + return( (ber_slen_t) actuallen ); +} + ber_slen_t ber_read( BerElement *ber, @@ -185,11 +204,8 @@ ber_free_buf( BerElement *ber ) void ber_free( BerElement *ber, int freebuf ) { -#ifdef LDAP_MEMORY_DEBUG - assert( ber != NULL ); -#endif - if( ber == NULL ) { + LDAP_MEMORY_DEBUG_ASSERT( ber != NULL ); return; } @@ -472,8 +488,10 @@ ber_get_next( assert( SOCKBUF_VALID( sb ) ); assert( LBER_VALID( ber ) ); - ber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug, - "ber_get_next\n" ); + if ( ber->ber_debug & LDAP_DEBUG_TRACE ) { + ber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug, + "ber_get_next\n" ); + } /* * Any ber element looks like this: tag length contents.