diff --git a/libraries/liblber/io.c b/libraries/liblber/io.c index cbcbb84ba3c30cdadaf5b7766251fa39265b09a6..57a2eceb4b9a5607d140ddc79663837097fe5795 100644 --- a/libraries/liblber/io.c +++ b/libraries/liblber/io.c @@ -202,10 +202,18 @@ ber_free( BerElement *ber, int freebuf ) assert( BER_VALID( ber ) ); - if ( freebuf && ber->ber_buf != NULL ) + if ( freebuf ) { + Seqorset *s, *next; LBER_FREE( ber->ber_buf ); + for( s = ber->ber_sos ; s != NULL ; s = next ) { + next = s->sos_next; + LBER_FREE( s ); + } + } + ber->ber_buf = NULL; + ber->ber_sos = NULL; ber->ber_valid = LBER_UNINITIALIZED; LBER_FREE( (char *) ber );