I was encoding a ber of the form "{{something}" (note the missing "}") using HEAD's liblber. ber_flatten() was (correctly?) returning an empty value; perhaps it should return an error code, indicating that the ber is incomplete? Am I missing some function to test the validity of a ber?
p.
masarati@aero.polimi.it writes:
I was encoding a ber of the form "{{something}" (note the missing "}") using HEAD's liblber. ber_flatten() was (correctly?) returning an empty value; perhaps it should return an error code, indicating that the ber is incomplete? Am I missing some function to test the validity of a ber?
I think this'll do it, but OpenLDAP is a a bit too smart about ber sometimes so I wouldn't trust it without testing. I suggest you run make test, remove anything that causes the assert, then remove the assert and commit. I'm a bit busy with other things at the moment...
--- libraries/liblber/io.c 2010-11-24 15:03:07.000000000 +0100 +++ libraries/liblber/io.c 2010-12-31 11:06:58.899323000 +0100 @@ -387,5 +387,6 @@ int ber_flatten2( assert( bv != NULL );
- if ( bv == NULL ) { + if ( bv == NULL || ber->ber_sos_ptr != NULL ) { + assert( ber->ber_sos_ptr != NULL ); /* For debugging */ return -1; }
Eh, that should go in ber_flatten, not ber_flatten2. It's not just OpenLDAP which can't be trusted with ber at the moment, I seem to be poor at multi-tasking:)
openldap-technical@openldap.org