[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