From ae9a3274bc511a302ab52ec94b43b7a0abd84fe9 Mon Sep 17 00:00:00 2001 From: Amitay Isaacs Date: Wed, 10 Aug 2011 17:32:32 +1000 Subject: passdb: Call with correct backend methods instead of default methods Pair-Programmed-With: Andrew Bartlett --- source3/passdb/passdb.c | 14 ++++++++------ source3/passdb/pdb_interface.c | 8 +++++--- source3/passdb/proto.h | 3 ++- 3 files changed, 15 insertions(+), 10 deletions(-) (limited to 'source3') diff --git a/source3/passdb/passdb.c b/source3/passdb/passdb.c index faa608cc78..62dcb5dedd 100644 --- a/source3/passdb/passdb.c +++ b/source3/passdb/passdb.c @@ -146,7 +146,8 @@ static int count_commas(const char *str) attributes and a user SID. *********************************************************************/ -static NTSTATUS samu_set_unix_internal(struct samu *user, const struct passwd *pwd, bool create) +static NTSTATUS samu_set_unix_internal(struct pdb_methods *methods, + struct samu *user, const struct passwd *pwd, bool create) { const char *guest_account = lp_guestaccount(); const char *domain = lp_netbios_name(); @@ -246,11 +247,11 @@ static NTSTATUS samu_set_unix_internal(struct samu *user, const struct passwd *p initialized and will fill in these fields later (such as from a netr_SamInfo3 structure) */ - if ( create && (pdb_capabilities() & PDB_CAP_STORE_RIDS)) { + if ( create && (methods->capabilities(methods) & PDB_CAP_STORE_RIDS)) { uint32_t user_rid; struct dom_sid user_sid; - if ( !pdb_new_rid( &user_rid ) ) { + if ( !methods->new_rid(methods, &user_rid) ) { DEBUG(3, ("Could not allocate a new RID\n")); return NT_STATUS_ACCESS_DENIED; } @@ -282,12 +283,13 @@ static NTSTATUS samu_set_unix_internal(struct samu *user, const struct passwd *p NTSTATUS samu_set_unix(struct samu *user, const struct passwd *pwd) { - return samu_set_unix_internal( user, pwd, False ); + return samu_set_unix_internal( NULL, user, pwd, False ); } -NTSTATUS samu_alloc_rid_unix(struct samu *user, const struct passwd *pwd) +NTSTATUS samu_alloc_rid_unix(struct pdb_methods *methods, + struct samu *user, const struct passwd *pwd) { - return samu_set_unix_internal( user, pwd, True ); + return samu_set_unix_internal( methods, user, pwd, True ); } /********************************************************** diff --git a/source3/passdb/pdb_interface.c b/source3/passdb/pdb_interface.c index bc79459245..44e7421a07 100644 --- a/source3/passdb/pdb_interface.c +++ b/source3/passdb/pdb_interface.c @@ -496,7 +496,7 @@ static NTSTATUS pdb_default_create_user(struct pdb_methods *methods, /* we have a valid SID coming out of this call */ - status = samu_alloc_rid_unix( sam_pass, pwd ); + status = samu_alloc_rid_unix(methods, sam_pass, pwd); TALLOC_FREE( pwd ); @@ -521,7 +521,7 @@ static NTSTATUS pdb_default_create_user(struct pdb_methods *methods, pdb_set_acct_ctrl(sam_pass, acb_info, PDB_CHANGED); - status = pdb_add_sam_account(sam_pass); + status = methods->add_sam_account(methods, sam_pass); TALLOC_FREE(sam_pass); @@ -579,7 +579,9 @@ static NTSTATUS pdb_default_delete_user(struct pdb_methods *methods, NTSTATUS status; fstring username; - status = pdb_delete_sam_account(sam_acct); + memcache_flush(NULL, PDB_GETPWSID_CACHE); + + status = methods->delete_sam_account(methods, sam_acct); if (!NT_STATUS_IS_OK(status)) { return status; } diff --git a/source3/passdb/proto.h b/source3/passdb/proto.h index e84ece7497..ee945ac452 100644 --- a/source3/passdb/proto.h +++ b/source3/passdb/proto.h @@ -66,7 +66,8 @@ bool login_cache_delentry(const struct samu *sampass); const char *my_sam_name(void); struct samu *samu_new( TALLOC_CTX *ctx ); NTSTATUS samu_set_unix(struct samu *user, const struct passwd *pwd); -NTSTATUS samu_alloc_rid_unix(struct samu *user, const struct passwd *pwd); +NTSTATUS samu_alloc_rid_unix(struct pdb_methods *methods, + struct samu *user, const struct passwd *pwd); char *pdb_encode_acct_ctrl(uint32_t acct_ctrl, size_t length); uint32_t pdb_decode_acct_ctrl(const char *p); void pdb_sethexpwd(char p[33], const unsigned char *pwd, uint32_t acct_ctrl); -- cgit