bug in interplay between SAMR_CREATE_USER and ldapsam

Brad Langhorst brad at langhorst.com
Fri May 14 02:14:42 GMT 2004


This bug is exposed when a client issues the RPC  SAMR_CREATE_USER
command.

this command is routed to the 
_samr_create_user function in srv__samr__nt

About half way through the function it correctly calls the add machine
script - which creates a machine account in the ldap store.

after this call succeeds it calls pdb_add_sam_account
which gets routed to ldapsam_add_sam_account

ldapsam_add_sam_account immediately searches the ldap store for the user
it's going to create and returns an NT_STATUS_UNSUCCESSFUL because this
user was added to the ldap store by the add_machine script.

I don't know this code very well so I'm not sure if it is appropriate
for ldapsam_add_sam_account to return NT_STATUS_UNSUCCESSFUL - why not
return NT_STATUS_USER_EXISTS?

it doesn't really matter because the struct sitting between the rpc area
and the pdb backends just returns

NT_STATUS_IS_OK(pdb_context->pdb_add_sam_account(pdb_context,
sam_acct));

so all the errors get collapsed into one state and the caller wouldn't
be able do anything different anyway.

Is it reasonable for me to change that struct to return the actual
NT_STATUS code so the RPC code can do something different?

What about just returning NT_STATUS_OK from the user search?
what other code paths care about pre-existing users?

brad





More information about the samba-technical mailing list