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

Re: oid="1.2.826.0.1.334810.2.3" (noncritical) failed (ITS#2219)



At 10:44 PM 2002-12-05, osinig@mekhanika.ru wrote:
>I didn't diagnose the exact problem, but the following fix works:

This fix is valid (a similar fix was applied previously to HEAD),
it detects a possible protocol error.  I've now back-ported the
change to OPENLDAP_REL_ENG_2_1.

Thanks, Kurt


>diff -u servers/slapd/controls.c.orig servers/slapd/controls.c 
>--- servers/slapd/controls.c.orig     2002-12-03 14:06:43.000000000 +0400
>+++ servers/slapd/controls.c  2002-11-28 12:00:05.000000000 +0400
>@@ -564,6 +564,11 @@
>                return LDAP_PROTOCOL_ERROR;
>        }
> 
>+       if ( ctrl->ldctl_value.bv_len == 0 ) {
>+               *text = "values return filter control value is empty";
>+               return LDAP_PROTOCOL_ERROR;
>+       }
>+
>        ber = ber_init( &(ctrl->ldctl_value) );
>        if (ber == NULL) {
>                *text = "internal error";
> 
>
>I don't know how to provide not "worthless bt".  When I build slapd without threads and set breakpoint at function "parseValuesReturnFilter", I get  :
>
>
>Breakpoint 1, parseValuesReturnFilter (conn=0x813bb60, op=0x818f8b0, ctrl=0x0, text=0x818f4e8)
>    at controls.c:556
>556     {
>(gdb) bt
>#0  parseValuesReturnFilter (conn=0x813bb60, op=0x818f8b0, ctrl=0x0, text=0x818f4e8)
>    at controls.c:556
>#1  0x0807c5dc in get_ctrls (conn=0x8056da4, op=0x402dacb8, sendres=135862584) at controls.c:340
>(gdb) step
>0x0807cd68 in find_ctrl ()
>(gdb) bt
>#0  0x0807cd68 in find_ctrl ()
>#1  0x0807ca18 in parseValuesReturnFilter (conn=0x813bb60, op=0x81919c0, ctrl=0x8191938,
>    text=0x818f4e8) at controls.c:556
>(gdb) step
>Single stepping until exit from function find_ctrl,
>which has no line number information.
>
>Program received signal SIGABRT, Aborted.
>0x42029341 in kill () from /lib/libc.so.6
>(gdb) bt
>#0  0x42029341 in kill () from /lib/libc.so.6
>#1  0x42029138 in raise () from /lib/libc.so.6
>#2  0x4202a7dc in abort () from /lib/libc.so.6
>#3  0x42022144 in __assert_fail () from /lib/libc.so.6
>
>
>Please let me know how to provide a better back trace.