[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: slapd crash with passwd database, and a patch (ITS#1467)
Fixed in HEAD, thanks.
At 02:14 PM 2001-11-27, brad@vecna.com wrote:
>Full_Name: Brad Thompson
>Version: 2.0.14 and 2.0.18
>OS: Debian Linux (Woody)
>URL: ftp://ftp.openldap.org/incoming/
>Submission from: (NULL) (18.187.6.228)
>
>
>When I run slapd like:
>
> slapd -d 1023 -f ~/ldap/slapd.conf -h ldap://localhost:1234
>
>And ~/ldap/slapd.conf contains:
>
> include /usr/local/etc/openldap/schema/core.schema
> database passwd
> suffix "dc=vecna,dc=com"
> access to *
> by anonymous read
> by * read
>
>And I search it with:
> ldapsearch -x -H ldap://localhost:1234 -b 'dc=vecna,dc=com' 'objectclass=*'
>
>It segfaults. Here is a backtrace:
>
>#0 0x0805ff47 in acl_get (a=0x80b3f58, count=0xbf5ff868, be=0x80b3ed8,
> op=0x80bb708, e=0x80c2568, desc=0x80bb890, nmatch=10, matches=0xbf5ff870)
> at acl.c:258
>#1 0x0805fcd4 in access_allowed (be=0x80b3ed8, conn=0x4029797c, op=0x80bb708,
> e=0x80c2568, desc=0x80bb890, val=0x0, access=ACL_SEARCH) at acl.c:195
>#2 0x0805ef31 in test_presence_filter (be=0x80b3ed8, conn=0x4029797c,
> op=0x80bb708, e=0x80c2568, desc=0x80bb890) at filterentry.c:245
>#3 0x0805eb68 in test_filter (be=0x80b3ed8, conn=0x4029797c, op=0x80bb708,
> e=0x80c2568, f=0x80bb830) at filterentry.c:93
>#4 0x0806f571 in passwd_back_search (be=0x80b3ed8, conn=0x4029797c,
> op=0x80bb708, base=0x80bb640 "dc=vecna,dc=com",
> nbase=0x80bb658 "DC=VECNA,DC=COM", scope=2, deref=0, slimit=0, tlimit=0,
> filter=0x80bb830, filterstr=0x80bb860 "(objectClass=*)", attrs=0x0,
> attrsonly=0) at search.c:134
>#5 0x080509cd in do_search (conn=0x4029797c, op=0x80bb708) at search.c:278
>#6 0x0804f6bc in connection_operation (arg_v=0x80bb6a0) at connection.c:831
>#7 0x08075522 in ldap_int_thread_pool_wrapper (pool=0x80a1a28) at tpool.c:379
>#8 0x40156eca in pthread_start_thread () from /lib/libpthread.so.0
>#9 0x40156f11 in pthread_start_thread_event () from /lib/libpthread.so.0
>
>Here is a patch to fix it. I don't understand the code that well, so
>it is possible it is the wrong fix, but it fixes the segfault and my
>test case behaves properly.
>
>--- search.c.orig Tue Nov 27 17:04:19 2001
>+++ search.c Tue Nov 27 16:35:59 2001
>@@ -84,6 +84,8 @@
> e = (Entry *) ch_calloc(1, sizeof(Entry));
> e->e_attrs = NULL;
> e->e_dn = ch_strdup( base );
>+ e->e_ndn = ch_strdup( base );
>+ (void) dn_normalize( e->e_ndn );
>
> /* Use the first attribute of the DN
> * as an attribute within the entry itself.