diff options
author | Stefan Metzmacher <metze@samba.org> | 2018-02-02 15:24:00 +0100 |
---|---|---|
committer | Ralph Boehme <slow@samba.org> | 2018-02-10 08:35:17 +0100 |
commit | b60c634123ee00021efc5b5aaa03e1663474d3da (patch) | |
tree | 426cf076402d8f80093341ee031bff04c2c14702 /source3/winbindd/winbindd_cm.c | |
parent | d76bcdb0854cff9b08010d47469fd48324d902bc (diff) | |
download | samba-b60c634123ee00021efc5b5aaa03e1663474d3da.tar.gz |
winbindd: introduce a cm_connect_netlogon_secure() which gives a valid netlogon_creds_ctx
At lot of callers require a valid schannel connection.
Bug: https://bugzilla.samba.org/show_bug.cgi?id=13259
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Diffstat (limited to 'source3/winbindd/winbindd_cm.c')
-rw-r--r-- | source3/winbindd/winbindd_cm.c | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c index b7fd981547f..54416e02dcd 100644 --- a/source3/winbindd/winbindd_cm.c +++ b/source3/winbindd/winbindd_cm.c @@ -2623,16 +2623,11 @@ static NTSTATUS cm_get_schannel_creds(struct winbindd_domain *domain, return NT_STATUS_OK; } - result = cm_connect_netlogon(domain, &netlogon_pipe); + result = cm_connect_netlogon_secure(domain, &netlogon_pipe, ppdc); if (!NT_STATUS_IS_OK(result)) { return result; } - if (domain->conn.netlogon_creds_ctx == NULL) { - return NT_STATUS_TRUSTED_DOMAIN_FAILURE; - } - - *ppdc = domain->conn.netlogon_creds_ctx; return NT_STATUS_OK; } @@ -3325,6 +3320,29 @@ NTSTATUS cm_connect_netlogon(struct winbindd_domain *domain, return status; } +NTSTATUS cm_connect_netlogon_secure(struct winbindd_domain *domain, + struct rpc_pipe_client **cli, + struct netlogon_creds_cli_context **ppdc) +{ + NTSTATUS status; + + if (domain->secure_channel_type == SEC_CHAN_NULL) { + return NT_STATUS_CANT_ACCESS_DOMAIN_INFO; + } + + status = cm_connect_netlogon(domain, cli); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (domain->conn.netlogon_creds_ctx == NULL) { + return NT_STATUS_TRUSTED_DOMAIN_FAILURE; + } + + *ppdc = domain->conn.netlogon_creds_ctx; + return NT_STATUS_OK; +} + void winbind_msg_ip_dropped(struct messaging_context *msg_ctx, void *private_data, uint32_t msg_type, |