[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: RE : cvs HEAD, dumb filter (cn=) crashes slapd



Pierangelo Masarati wrote:
> 
> John Hughes wrote:
> >
> > >> Just doing a ldapsearch (cn=) crashes slapd,
> > >>
> > >> schema_init.c:542: failed assertion `normalized->bv_val'
> >
> > >I'll check that later; can you tell me what client/library
> > >version did you use?
> >
> > 2.0.18-Release
> >
> > Same results with 2.X (as of today) and perl-ldap-0.25.
> 
> I asked because I knew "cn=" was handled correctly by the
> ldap_str2[r]dn routines at some stage of their development,
> so I suspected a (mis)use not expected or so.  I'll check
> it in a moment, but I'm about to leave for the weekend, so
> I'm not sure I'llbe able to fix it tonight.

This is what I got:

Program received signal SIGABRT, Aborted.
0x400f9c71 in __kill () from /lib/libc.so.6
(gdb) bt
#0  0x400f9c71 in __kill () from /lib/libc.so.6
#1  0x400d01b7 in raise (sig=6) at signals.c:65
#2  0x400faff8 in abort () at ../sysdeps/generic/abort.c:88
#3  0x400f3b2e in __assert_fail () at assert.c:59
#4  0x806abe2 in UTF8StringNormalize (syntax=0x816ed00, val=0xbf5ffc64, 
    normalized=0x81ab66c) at schema_init.c:542
#5  0x805f279 in value_normalize (ad=0x81a04f0, usage=256,
in=0xbf5ffc64, 
    out=0x81ab66c, text=0xbf5ffd14) at value.c:109
#6  0x805f5c0 in get_ava (ber=0x81ab5f8, ava=0x81ab65c, usage=256, 
    text=0xbf5ffd14) at ava.c:66
#7  0x8050b8c in get_filter (conn=0x40258da4, ber=0x81ab5f8,
filt=0xbf5ffd08, 
    fstr=0xbf5ffd0c, text=0xbf5ffd14) at filter.c:111
#8  0x80504a9 in do_search (conn=0x40258da4, op=0x81ab518) at
search.c:139
#9  0x804f629 in connection_operation (arg_v=0x81ab598) at
connection.c:964
#10 0x80aa748 in ldap_int_thread_pool_wrapper (pool=0x816d620) at
tpool.c:402
#11 0x400cdb25 in pthread_start_thread (arg=0xbf5ffe40) at manager.c:241

This means get_ava() asks value_normalize() to normalize 
an empty value; this results in allocating a null-valued
normalized value struct berval.  There are two solutions 
to this problem: allow empty strings as values (which means
handling the 0 length berval in value_normalize()) or 
stop them before calling the normalization function.
I don't have time to dig out what's the more appropriate
behavior from the appropriate RFC's so if there's any 
suggestion, I can fix the problem in a moment.

Thanks for cooperating, 

Pierangelo.

> 
> --
> Dr. Pierangelo Masarati               | voice: +39 02 2399 8309
> Dip. Ing. Aerospaziale                | fax:   +39 02 2399 8334
> Politecnico di Milano                 |
> mailto:pierangelo.masarati@polimi.it
> via La Masa 34, 20156 Milano, Italy   |
> http://www.aero.polimi.it/~masarati

-- 
Dr. Pierangelo Masarati               | voice: +39 02 2399 8309
Dip. Ing. Aerospaziale                | fax:   +39 02 2399 8334
Politecnico di Milano                 |
mailto:pierangelo.masarati@polimi.it
via La Masa 34, 20156 Milano, Italy   |
http://www.aero.polimi.it/~masarati