diff options
author | Stefan Metzmacher <metze@samba.org> | 2017-01-31 15:19:00 +0100 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2017-02-28 09:38:24 +0100 |
commit | a605f6c5044a1277d5575b0a6df4280eb1feba16 (patch) | |
tree | 54f1bfbf5738878cae83eb7d4e7b64b20133bd9c | |
parent | 352661537b24abd9262c91d013049cff204b5eb2 (diff) | |
download | samba-a605f6c5044a1277d5575b0a6df4280eb1feba16.tar.gz |
s3:winbindd: make sure cm_prepare_connection() only returns OK with a valid tree connect
If cm_get_ipc_credentials() returned anonymous creds and signing is required
we were returning the result of cm_get_ipc_credentials() instead of
the original error.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12588
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
(similar to commit cebcc2adc7e568d492466bb69f21ba2a9630a0d2)
-rw-r--r-- | source3/winbindd/winbindd_cm.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c index 45e3fad7a4d..801be11dfad 100644 --- a/source3/winbindd/winbindd_cm.c +++ b/source3/winbindd/winbindd_cm.c @@ -995,6 +995,8 @@ static NTSTATUS cm_prepare_connection(struct winbindd_domain *domain, struct named_mutex *mutex; NTSTATUS result = NT_STATUS_UNSUCCESSFUL; + NTSTATUS tmp_status; + NTSTATUS tcon_status = NT_STATUS_NETWORK_NAME_DELETED; enum smb_signing_setting smb_sign_client_connections = lp_client_ipc_signing(); @@ -1186,8 +1188,10 @@ static NTSTATUS cm_prepare_connection(struct winbindd_domain *domain, goto done; ipc_fallback: - result = cm_get_ipc_credentials(talloc_tos(), &creds); - if (!NT_STATUS_IS_OK(result)) { + TALLOC_FREE(creds); + tmp_status = cm_get_ipc_credentials(talloc_tos(), &creds); + if (!NT_STATUS_IS_OK(tmp_status)) { + result = tmp_status; goto done; } @@ -1274,11 +1278,11 @@ static NTSTATUS cm_prepare_connection(struct winbindd_domain *domain, } result = cli_tree_connect(*cli, "IPC$", "IPC", "", 0); - if (!NT_STATUS_IS_OK(result)) { DEBUG(1,("failed tcon_X with %s\n", nt_errstr(result))); goto done; } + tcon_status = result; /* cache the server name for later connections */ @@ -1297,6 +1301,10 @@ static NTSTATUS cm_prepare_connection(struct winbindd_domain *domain, done: TALLOC_FREE(mutex); + if (NT_STATUS_IS_OK(result)) { + result = tcon_status; + } + if (!NT_STATUS_IS_OK(result)) { winbind_add_failed_connection_entry(domain, controller, result); if ((*cli) != NULL) { |