summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libcli/auth/netlogon_creds_cli.c14
-rw-r--r--libcli/auth/netlogon_creds_cli.h6
-rw-r--r--source3/rpc_client/cli_netlogon.c3
-rw-r--r--source3/rpc_client/cli_pipe.c3
4 files changed, 19 insertions, 7 deletions
diff --git a/libcli/auth/netlogon_creds_cli.c b/libcli/auth/netlogon_creds_cli.c
index 31bd98ddc94..cb3d6a9eeb4 100644
--- a/libcli/auth/netlogon_creds_cli.c
+++ b/libcli/auth/netlogon_creds_cli.c
@@ -1728,8 +1728,11 @@ static void netlogon_creds_cli_check_caps(struct tevent_req *subreq)
tevent_req_done(req);
}
-NTSTATUS netlogon_creds_cli_check_recv(struct tevent_req *req)
+NTSTATUS netlogon_creds_cli_check_recv(struct tevent_req *req,
+ union netr_Capabilities *capabilities)
{
+ struct netlogon_creds_cli_check_state *state = tevent_req_data(
+ req, struct netlogon_creds_cli_check_state);
NTSTATUS status;
if (tevent_req_is_nterror(req, &status)) {
@@ -1738,12 +1741,17 @@ NTSTATUS netlogon_creds_cli_check_recv(struct tevent_req *req)
return status;
}
+ if (capabilities != NULL) {
+ *capabilities = state->caps;
+ }
+
tevent_req_received(req);
return NT_STATUS_OK;
}
NTSTATUS netlogon_creds_cli_check(struct netlogon_creds_cli_context *context,
- struct dcerpc_binding_handle *b)
+ struct dcerpc_binding_handle *b,
+ union netr_Capabilities *capabilities)
{
TALLOC_CTX *frame = talloc_stackframe();
struct tevent_context *ev;
@@ -1761,7 +1769,7 @@ NTSTATUS netlogon_creds_cli_check(struct netlogon_creds_cli_context *context,
if (!tevent_req_poll_ntstatus(req, ev, &status)) {
goto fail;
}
- status = netlogon_creds_cli_check_recv(req);
+ status = netlogon_creds_cli_check_recv(req, capabilities);
fail:
TALLOC_FREE(frame);
return status;
diff --git a/libcli/auth/netlogon_creds_cli.h b/libcli/auth/netlogon_creds_cli.h
index 62d11ac283e..56a2dd9bc77 100644
--- a/libcli/auth/netlogon_creds_cli.h
+++ b/libcli/auth/netlogon_creds_cli.h
@@ -116,9 +116,11 @@ struct tevent_req *netlogon_creds_cli_check_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
struct netlogon_creds_cli_context *context,
struct dcerpc_binding_handle *b);
-NTSTATUS netlogon_creds_cli_check_recv(struct tevent_req *req);
+NTSTATUS netlogon_creds_cli_check_recv(struct tevent_req *req,
+ union netr_Capabilities *capabilities);
NTSTATUS netlogon_creds_cli_check(struct netlogon_creds_cli_context *context,
- struct dcerpc_binding_handle *b);
+ struct dcerpc_binding_handle *b,
+ union netr_Capabilities *capabilities);
struct tevent_req *netlogon_creds_cli_ServerPasswordSet_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
diff --git a/source3/rpc_client/cli_netlogon.c b/source3/rpc_client/cli_netlogon.c
index c315e69a902..19b81a5f5a9 100644
--- a/source3/rpc_client/cli_netlogon.c
+++ b/source3/rpc_client/cli_netlogon.c
@@ -446,7 +446,8 @@ again:
goto fail;
}
- status = netlogon_creds_cli_check(creds_ctx, rpccli->binding_handle);
+ status = netlogon_creds_cli_check(creds_ctx, rpccli->binding_handle,
+ NULL);
if (!NT_STATUS_IS_OK(status)) {
DBG_WARNING("netlogon_creds_cli_check failed: %s\n",
nt_errstr(status));
diff --git a/source3/rpc_client/cli_pipe.c b/source3/rpc_client/cli_pipe.c
index c7042947b24..d449a828b5a 100644
--- a/source3/rpc_client/cli_pipe.c
+++ b/source3/rpc_client/cli_pipe.c
@@ -3370,7 +3370,8 @@ NTSTATUS cli_rpc_pipe_open_schannel_with_creds(struct cli_state *cli,
if (ndr_syntax_id_equal(&table->syntax_id,
&ndr_table_netlogon.syntax_id)) {
status = netlogon_creds_cli_check(netlogon_creds,
- rpccli->binding_handle);
+ rpccli->binding_handle,
+ NULL);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(0, ("netlogon_creds_cli_check failed with %s\n",
nt_errstr(status)));