diff options
author | Andrew Tridgell <tridge@samba.org> | 2000-05-10 13:21:32 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2000-05-10 13:21:32 +0000 |
commit | a71d9b291c5365f08250b77d281f4cc8f24ec2e2 (patch) | |
tree | 00ad8f32bdfb348fb6233b132ef173b08263bf1a /source3 | |
parent | b3d4c0c9f56bd654ba92f3967eb4330354b84c63 (diff) | |
download | samba-a71d9b291c5365f08250b77d281f4cc8f24ec2e2.tar.gz samba-a71d9b291c5365f08250b77d281f4cc8f24ec2e2.tar.bz2 samba-a71d9b291c5365f08250b77d281f4cc8f24ec2e2.zip |
treat a blank "password server =" line as a "*" if in domain security
(This used to be commit 5a617c013cce65434d315dc33279a4bc28dc63de)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/nsswitch/winbindd_util.c | 22 | ||||
-rw-r--r-- | source3/smbd/password.c | 5 |
2 files changed, 20 insertions, 7 deletions
diff --git a/source3/nsswitch/winbindd_util.c b/source3/nsswitch/winbindd_util.c index b3e5780f93..daffb1ef8c 100644 --- a/source3/nsswitch/winbindd_util.c +++ b/source3/nsswitch/winbindd_util.c @@ -26,7 +26,9 @@ BOOL domain_handles_open(struct winbindd_domain *domain) { return domain->sam_handle_open && - domain->sam_dom_handle_open; + domain->sam_dom_handle_open && + rpc_hnd_ok(&domain->sam_handle) && + rpc_hnd_ok(&domain->sam_dom_handle); } static BOOL resolve_dc_name(char *domain_name, fstring domain_controller) @@ -36,8 +38,7 @@ static BOOL resolve_dc_name(char *domain_name, fstring domain_controller) /* if its our primary domain and password server is not '*' then use the password server parameter */ - if (strcmp(domain_name,lp_workgroup()) == 0 && - strcmp(lp_passwordserver(),"*") != 0) { + if (strcmp(domain_name,lp_workgroup()) == 0 && !lp_wildcard_dc()) { fstrcpy(domain_controller, lp_passwordserver()); return True; } @@ -124,6 +125,19 @@ static BOOL open_sam_handles(struct winbindd_domain *domain) if (!domain->got_domain_info) return False; } + if ((domain->sam_handle_open && !rpc_hnd_ok(&domain->sam_handle)) || + (domain->sam_dom_handle_open && !rpc_hnd_ok(&domain->sam_dom_handle))) { + domain->got_domain_info = get_domain_info(domain); + if (domain->sam_dom_handle_open) { + samr_close(&domain->sam_dom_handle); + domain->sam_dom_handle_open = False; + } + if (domain->sam_handle_open) { + samr_close(&domain->sam_handle); + domain->sam_handle_open = False; + } + } + /* Open sam handle if it isn't already open */ if (!domain->sam_handle_open) { domain->sam_handle_open = @@ -187,7 +201,7 @@ void establish_connections(void) if (!server_state.pwdb_initialised) { fstrcpy(server_state.controller, lp_passwordserver()); - if (strcmp(server_state.controller,"*") == 0) { + if (lp_wildcard_dc()) { if (!resolve_dc_name(lp_workgroup(), server_state.controller)) { return; } diff --git a/source3/smbd/password.c b/source3/smbd/password.c index 325600e92e..3953c5b0e3 100644 --- a/source3/smbd/password.c +++ b/source3/smbd/password.c @@ -1457,7 +1457,8 @@ BOOL domain_client_validate( char *user, char *domain, * PDC/BDC. Contact each in turn and try and authenticate. */ - pserver = strdup(lp_passwordserver()); + pserver = lp_passwordserver(); + if (! *pserver) pserver = "*"; p = pserver; while (!connected_ok && @@ -1469,8 +1470,6 @@ BOOL domain_client_validate( char *user, char *domain, } } - free(pserver); - if (!connected_ok) { DEBUG(0,("domain_client_validate: Domain password server not available.\n")); cli_shutdown(&cli); |