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

Openldap allows to break schema (and doesn't start ever after)



Hi, 

I've accidentally broken my openldap schema when I've changed one of 
objectClass definitions. For example I have two objectClasses and one is 
a parent for second:

olcObjectClasses: {0}( 1.2.3.4 NAME 'foo' DESC '' SUP top AUXILIARY 
X-ORIGIN 'user defined' )
olcObjectClasses: {1}( 1.2.3.5 NAME 'bar' DESC '' SUP foo AUXILIARY 
X-ORIGIN 'user defined' )

I've changed definition of foo - I've delete this object and (my 
mistake) put it without any number at bottom of all classes:

dn: cn=config
changetype: modify
delete: olcObjectClasses
olcObjectClasses: {0}
-
add: olcObjectClasses
olcObjectClasses: ( 1.2.3.4 NAME 'foo' DESC '' SUP top AUXILIARY 
X-ORIGIN 'user defined' )

So now I have class bar at top of schema and foo at bottom. After 
restart slapd won't start. Slapcat says:

56d4678f olcObjectClasses: value #5 olcObjectClasses: ObjectClass not 
found: "foo"
56d4678f config error processing cn=config: olcObjectClasses: 
ObjectClass not found: "foo"
slapcat: bad configuration file!

I know that is my mistake, but I think openldap shouldn't allow to make something that 
could break schema. 
I think that there are should constraints that do not allow to remove objectClass 
which is parent for another class.

Is it a known bug, or anyone has stumbled upon this and has a solution to start slapd afterwards?

-- 
Daniel Fenert