Full_Name: Ryan Tandy
Version: RE24
OS: Debian
URL:
Submission from: (NULL) (70.66.128.207)
Submitted by: ryan
Reported in IRC #openldap by user Dragnell, reproduced by me on current RE24.
Configure slapd like so:
--
include servers/slapd/schema/core.schema
include servers/slapd/schema/cosine.schema
include servers/slapd/schema/inetorgperson.schema
database config
rootpw secret
database ldap
--
Now try to add the following LDIF:
./clients/tools/ldapmodify -H ldap://:9000 -x -D cn=config -w secret
dn: olcOverlay=pcache,olcDatabase={1}ldap,cn=config
changetype: add
objectClass: olcPcacheConfig
olcPcache: mdb 100000 1 1000 100
olcPcacheAttrset: 0 mail
olcPcacheTemplate: "(&(objectClass=inetOrgPerson)(mail=))" 0 3600
On the first attempt, the config is rejected:
adding new entry "olcOverlay=pcache,olcDatabase={1}ldap,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
additional info: unable to parse template: AttributeDescription contains
inappropriate characters
If you try a second time to add the same LDIF, slapd crashes:
adding new entry "olcOverlay=pcache,olcDatabase={1}ldap,cn=config"
ldap_result: Can't contact LDAP server (-1)
Thread 4 "slapd" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff6cf2700 (LWP 21122)]
0x000055555559cc78 in backend_stopdown_one (bd=0x7fffec102d10) at backend.c:429
429 LDAP_TAILQ_REMOVE( bd->be_pending_csn_list, csne, ce_csn_link );
(gdb) bt
#0 0x000055555559cc78 in backend_stopdown_one (bd=0x7fffec102d10) at
backend.c:429
#1 0x000055555568ea00 in pcache_db_destroy (be=0x5555558484f0, cr=0x0) at
pcache.c:4899
#2 0x000055555561ddad in overlay_destroy_one (be=0x5555558484f0,
on=0x7fffec102b30) at backover.c:1150
#3 0x0000555555574b48 in config_add_internal (cfb=0x555555765060 <cfBackInfo>,
e=0x555555873598, ca=0x7ffff6cf04f0,
rs=0x7ffff6cf1a80, renum=0x7ffff6cf16c0, op=0x7fffec000bb0) at
bconfig.c:5318
#4 0x0000555555575131 in config_back_add (op=0x7fffec000bb0, rs=0x7ffff6cf1a80)
at bconfig.c:5457
#5 0x00005555555951c7 in fe_op_add (op=0x7fffec000bb0, rs=0x7ffff6cf1a80) at
add.c:334
#6 0x0000555555594ac6 in do_add (op=0x7fffec000bb0, rs=0x7ffff6cf1a80) at
add.c:194
#7 0x000055555558b879 in connection_operation (ctx=0x7ffff6cf1bb0,
arg_v=0x7fffec000bb0) at connection.c:1175
#8 0x000055555558bdf1 in connection_read_thread (ctx=0x7ffff6cf1bb0, argv=0x9)
at connection.c:1311
#9 0x00005555556a569d in ldap_int_thread_pool_wrapper (xpool=0x5555557fbec0) at
tpool.c:696
#10 0x00007ffff7f86fa3 in start_thread (arg=<optimized out>) at
pthread_create.c:486
#11 0x00007ffff7eb74cf in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:95
The config in the example is invalid (due to containing a value for objectClass)
and it's correct to reject it. However, slapd should not crash.