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

(ITS#5343) cn=config crash when deleting attrs



Full_Name: Hallvard B Furuseth
Version: HEAD
OS: Linux
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (129.240.203.232)
Submitted by: hallvard


back-config crashes if I delete some attribute, even some which
does not exist, and then olcAttributeOptions:

bash$ cat slapd.conf
include  servers/slapd/schema/core.schema
database config
rootdn   cn=config
rootpw   secret

bash$ ldapmodify -xh:3890 -Dcn=config -wsecret
dn: cn=config
changetype: modify
# or use "delete: o"
delete: olcAllows
-
delete: olcAttributeOptions
olcAttributeOptions: foo
-

Crash in bconfig.c:config_modify_internal line 4843 because d == NULL:
4842                            if ( ml->sml_values ) {
4843                                    d = d->next;
4844                                    ch_free( dels );
4845                                    dels = d;
4846                            }

Backtrace:
#0  0x000000000042db19 in config_modify_internal (ce=0x9cb710, op=0x9d7330, 
    rs=0x41801cb0, ca=0x417ff750) at bconfig.c:4843
#1  0x000000000042e34a in config_back_modify (op=0x9d7330, rs=0x41801cb0)
    at bconfig.c:4991
#2  0x0000000000461107 in fe_op_modify (op=0x9d7330, rs=0x41801cb0)
    at modify.c:300
#3  0x00000000004609b0 in do_modify (op=0x9d7330, rs=0x41801cb0)
    at modify.c:175
#4  0x0000000000440dd8 in connection_operation (ctx=0x41801e00, arg_v=0x9d7330)
    at connection.c:1087
#5  0x0000000000441306 in connection_read_thread (ctx=0x41801e00, argv=0x9)
    at connection.c:1214
#6  0x00002b100d4c354f in ldap_int_thread_pool_wrapper (xpool=0x927a10)
    at tpool.c:625
#7  0x00002b100e1e6317 in start_thread () from /lib/libpthread.so.0
#8  0x00002b100f935d5d in clone () from /lib/libc.so.6
#9  0x0000000000000000 in ?? ()

Also the error message from deleting just olcAttributeOptions is bad:

bash$ ldapmodify -xh:3890 -Dcn=config -wsecret
dn: cn=config
changetype: modify
replace: olcAttributeOptions
olcAttributeOptions: foo

ldap_modify: Internal (implementation specific) error (80)
	additional info: modify/delete: modifyTimestamp: no such attribute
modifying entry "cn=config"

Finally "replace:" only needs to fail if there are options to delete,
not if one adds a line with just "attributeOptions" to slapd.conf.
That removes the default, "lang-".