From: Andrew Bartlett Date: Mon, 2 Jan 2012 03:29:51 +0000 (+1100) Subject: s3-librpc: Rename spnego_ntlmssp_init_client and make generic X-Git-Url: http://git.samba.org/?a=commitdiff_plain;ds=sidebyside;h=50a939ad8580c24fc42be50cda531874bfd66efd;p=metze%2Fsamba%2Fwip.git s3-librpc: Rename spnego_ntlmssp_init_client and make generic Signed-off-by: Stefan Metzmacher --- diff --git a/source3/librpc/crypto/cli_spnego.c b/source3/librpc/crypto/cli_spnego.c index 54ea99b8e85a..f64a537e202e 100644 --- a/source3/librpc/crypto/cli_spnego.c +++ b/source3/librpc/crypto/cli_spnego.c @@ -84,7 +84,8 @@ NTSTATUS spnego_gssapi_init_client(TALLOC_CTX *mem_ctx, return NT_STATUS_OK; } -NTSTATUS spnego_ntlmssp_init_client(TALLOC_CTX *mem_ctx, +NTSTATUS spnego_generic_init_client(TALLOC_CTX *mem_ctx, + const char *oid, bool do_sign, bool do_seal, bool is_dcerpc, const char *domain, @@ -100,7 +101,11 @@ NTSTATUS spnego_ntlmssp_init_client(TALLOC_CTX *mem_ctx, if (!NT_STATUS_IS_OK(status)) { return status; } - sp_ctx->mech = SPNEGO_NTLMSSP; + if (strcmp(oid, GENSEC_OID_NTLMSSP) == 0) { + sp_ctx->mech = SPNEGO_NTLMSSP; + } else { + return NT_STATUS_INVALID_PARAMETER; + } status = auth_generic_client_prepare(sp_ctx, &auth_generic_state); @@ -138,7 +143,12 @@ NTSTATUS spnego_ntlmssp_init_client(TALLOC_CTX *mem_ctx, GENSEC_FEATURE_SEAL); } - status = auth_generic_client_start(auth_generic_state, GENSEC_OID_NTLMSSP); + if (is_dcerpc) { + gensec_want_feature(auth_generic_state->gensec_security, + GENSEC_FEATURE_DCE_STYLE); + } + + status = auth_generic_client_start(auth_generic_state, oid); if (!NT_STATUS_IS_OK(status)) { TALLOC_FREE(sp_ctx); return status; diff --git a/source3/librpc/crypto/spnego.h b/source3/librpc/crypto/spnego.h index 2605169bb0f4..7e0f1590ab68 100644 --- a/source3/librpc/crypto/spnego.h +++ b/source3/librpc/crypto/spnego.h @@ -61,7 +61,8 @@ NTSTATUS spnego_gssapi_init_client(TALLOC_CTX *mem_ctx, const char *username, const char *password, struct spnego_context **spengo_ctx); -NTSTATUS spnego_ntlmssp_init_client(TALLOC_CTX *mem_ctx, +NTSTATUS spnego_generic_init_client(TALLOC_CTX *mem_ctx, + const char *oid, bool do_sign, bool do_seal, bool is_dcerpc, const char *domain, diff --git a/source3/rpc_client/cli_pipe.c b/source3/rpc_client/cli_pipe.c index a87cb6d5ee62..49053c980ecf 100644 --- a/source3/rpc_client/cli_pipe.c +++ b/source3/rpc_client/cli_pipe.c @@ -3175,7 +3175,8 @@ NTSTATUS cli_rpc_pipe_open_spnego_ntlmssp(struct cli_state *cli, goto err_out; } - status = spnego_ntlmssp_init_client(auth, + status = spnego_generic_init_client(auth, + GENSEC_OID_NTLMSSP, (auth->auth_level == DCERPC_AUTH_LEVEL_INTEGRITY), (auth->auth_level ==