diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/include/proto.h | 2 | ||||
-rw-r--r-- | source3/smbd/password.c | 13 | ||||
-rw-r--r-- | source3/smbd/reply.c | 11 |
3 files changed, 12 insertions, 14 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index 7100ee6526..1f2e238d58 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -4161,7 +4161,7 @@ struct cli_state *server_cryptkey(void); BOOL server_validate(char *user, char *domain, char *pass, int passlen, char *ntpass, int ntpasslen); -BOOL domain_client_validate( char *user, char *domain, char *server_list, +BOOL domain_client_validate( char *user, char *domain, char *acct_name, uint16 acct_type, char *smb_apasswd, int smb_apasslen, char *smb_ntpasswd, int smb_ntpasslen, diff --git a/source3/smbd/password.c b/source3/smbd/password.c index 3e4a856bfb..c14b50d3a6 100644 --- a/source3/smbd/password.c +++ b/source3/smbd/password.c @@ -1112,7 +1112,7 @@ use this machine as the password server.\n")); key from the workstation trust account password. ************************************************************************/ -BOOL domain_client_validate( char *user, char *domain, char *server_list, +BOOL domain_client_validate( char *user, char *domain, char *acct_name, uint16 acct_type, char *smb_apasswd, int smb_apasslen, char *smb_ntpasswd, int smb_ntpasslen, @@ -1143,6 +1143,13 @@ BOOL domain_client_validate( char *user, char *domain, char *server_list, return False; } + if (!get_any_dc_name(domain, srv_name)) + { + DEBUG(3,("domain_client_validate: could not find domain %s\n", + domain)); + return False; + } + /* * Next, check that the passwords given were encrypted. */ @@ -1198,8 +1205,8 @@ BOOL domain_client_validate( char *user, char *domain, char *server_list, * Now start the NT Domain stuff :-). */ - if(cli_nt_setup_creds(server_list, global_myname, trust_acct, - trust_passwd, acct_type, srv_name) != 0x0) + if(cli_nt_setup_creds(srv_name, global_myname, trust_acct, + trust_passwd, acct_type) != 0x0) { DEBUG(0,("domain_client_validate: unable to setup the PDC credentials to machine \ %s.\n", srv_name)); diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index 5cf2ac2a7a..a0ad2ca20d 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -506,8 +506,6 @@ static BOOL check_domain_security(char *orig_user, char *domain, fstring acct_name; uint16 acct_type = 0; - char *server_list = NULL; - if (lp_security() == SEC_SHARE || lp_security() == SEC_SERVER) { return False; @@ -524,14 +522,7 @@ static BOOL check_domain_security(char *orig_user, char *domain, acct_type = SEC_CHAN_DOMAIN; } - server_list = get_trusted_serverlist(domain); - - if (server_list == NULL) - { - return False; - } - - return domain_client_validate(orig_user, domain, server_list, + return domain_client_validate(orig_user, domain, acct_name, acct_type, smb_apasswd, smb_apasslen, smb_ntpasswd, smb_ntpasslen, |