Pierangelo,
First of all: Sorry, I've left in fact a paragraph in my .ldif example that should have come out.
I can reproduce what you've said and using the following code:
#include <ldap.h> #include <stdio.h>
int main() { char **c = ldap_explode_dn( "cn=With/Slash,ou=My address book,dc=somedomain,dc=org", 1);
int i; for (i = 0; c[i] != 0; i++) { printf("%s\n", c[i]); }
return 0; }
which correctly produces:
cn=With/Slash ou=My address book dc=somedomain dc=org
And executing:
# slapdn "cn=With/Slash,ou=My address book,dc=somedomain,dc=org"
produces the expected:
DN: <cn=With/Slash,ou=My address book,dc=somedomain,dc=org> check succeeded normalized: <cn=with/slash,ou=my address book,dc=somedomain,dc=org> pretty: <cn=With/Slash,ou=My address book,dc=somedomain,dc=org>
However, running the actual example produces the following full output:
$ ldapadd -x -D 'cn=root,dc=somedomain,dc=org' -W -f test.ldif Enter LDAP Password: adding new entry "dc=somedomain,dc=org"
adding new entry "ou=My address book,dc=somedomain,dc=org"
adding new entry "cn=With/Slash,ou=My address book,dc=somedomain,dc=org" ldap_add: No such object (32) additional info: Parent does not exist
which is erroneous.
Just to check that it is the forward slash that must be to blame, here's the full output of the counter check:
$ ldapadd -x -D 'cn=root,dc=somedomain,dc=org' -W -f test2.ldif Enter LDAP Password: adding new entry "dc=somedomain,dc=org"
adding new entry "ou=My address book,dc=somedomain,dc=org"
adding new entry "cn=WithoutSlash,ou=My address book,dc=somedomain,dc=org"
So, I still suspect a bug...
Reinhold