How to process schemaUpdateNow ldap request

Anatoliy Atanasov anatoliy.atanasov at postpath.com
Wed Jul 2 08:04:42 GMT 2008


I did the patch for the dn, and no problem with that now
--------------------------------------------------------
diff --git a/source/ldap_server/ldap_backend.c b/source/ldap_server/ldap_backend.c
index 9047773..2193c98 100644
--- a/source/ldap_server/ldap_backend.c
+++ b/source/ldap_server/ldap_backend.c
@@ -348,7 +348,7 @@ static NTSTATUS ldapsrv_ModifyRequest(struct ldapsrv_call *call)
        NT_STATUS_HAVE_NO_MEMORY(local_ctx);

        dn = ldb_dn_new(local_ctx, samdb, req->dn);
-       VALID_DN_SYNTAX(dn, 1);
+       VALID_DN_SYNTAX(dn, 0);

        DEBUG(10, ("ModifyRequest: dn: [%s]\n", req->dn));
---------------------------------------------------------
There is another error now:
     "additional info: attribute schemaUpdateNow is not a valid attribute in schema"
That happens in dsdb\samdb\ldb_modules\objectclass.c: fix_attributes function


----- Original Message -----
> From: simo <idra at samba.org>
> To: Andrew Bartlett <abartlet at samba.org>
> Cc: Michael Ströder <michael at stroeder.com>, Anatoliy Atanasov <anatoliy.atanasov at postpath.com>, samba-technical at lists.samba.org
> Sent: Tuesday, July 1, 2008 3:45:57 PM GMT+0200 Europe;Athens
> Subject: Re: How to process schemaUpdateNow ldap request

> > On Tue, 2008-07-01 at 16:54 +1000, Andrew Bartlett wrote:
> > On Mon, 2008-06-30 at 17:41 +0200, Michael Ströder wrote:
> > > Anatoliy Atanasov wrote:
> > > > 
> > > > I am trying to make schema cache in dsdb_schema to reload with 
> newly added mappings from ldb.
> > > > This is done by the following ldap request which is valid 
> command for Win2003
> > > > 
> > > > dn:
> > > > changetype: modify
> > > > add: schemaUpdateNow
> > > > schemaUpdateNow: 1
> > > > 
> > > > I want to process this in rootdse module .modify function, but 
> it's never called and the return message says:
> > > > 
> > > >> ldap_modify_ext: Invalid DN syntax (34)
> > > >>        additional info: Invalid DN (1 components needed for 
> 'dn')
> > > 
> > > FWIW your DN line in your e-mail above is "dn:". Maybe try it with
> > > "dn: " instead. The space is part of the separator between 
> attribute 
> > > type and attribute value.
> > > 
> > > See declaration of dn-spec and FILL in RFC 2849.
> > 
> > nah, this error occours well past the ldif parsing layer - it's 
> actually
> > a problem on the server.
> > 
> > If you look at ldap_server/ldap_backend.c, the macro VALID_DN_SYNTAX
> > takes two argument, the first being the DN, and the second is the 
> number
> > of components it must have.  Set that to 0 and you should be right.
> > 
> > I don't see why this layer should be trying to determine if a DN is
> > valid (ldb can do that very well itself).  This looks like Simo's 
> code,
> > according to 'git blame', so I'll flip-pass this question to him...
> 
> I think we added it before ldb was able to validate, then kept it for
> performance reasons, it make no sense to process the entry if it is
> going to be rejected.
> However a null DN should not be refuse I guess, feel free to patch the
> code to let that DN be considered valid (as it is).
> 
> Simo.
> 
> -- 
> Simo Sorce
> Samba Team GPL Compliance Officer <simo at samba.org>
> Senior Software Engineer at Red Hat Inc. <ssorce at redhat.com>


More information about the samba-technical mailing list