From 45f70db01070cfb0cdfb6ae0e8ee64da2bf42fc0 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Wed, 15 Jun 2011 11:15:06 +0200 Subject: s3-auth: Added remote_address to ntlmssp server. Signed-off-by: Andrew Bartlett --- source3/rpc_server/dcesrv_spnego.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'source3/rpc_server/dcesrv_spnego.c') diff --git a/source3/rpc_server/dcesrv_spnego.c b/source3/rpc_server/dcesrv_spnego.c index fb758e338b..515e59b7e8 100644 --- a/source3/rpc_server/dcesrv_spnego.c +++ b/source3/rpc_server/dcesrv_spnego.c @@ -19,6 +19,7 @@ #include "includes.h" #include "../libcli/auth/spnego.h" +#include "../lib/tsocket/tsocket.h" #include "dcesrv_ntlmssp.h" #include "dcesrv_gssapi.h" #include "dcesrv_spnego.h" @@ -26,6 +27,7 @@ static NTSTATUS spnego_init_server(TALLOC_CTX *mem_ctx, bool do_sign, bool do_seal, bool is_dcerpc, + const struct tsocket_address *remote_address, struct spnego_context **spnego_ctx) { struct spnego_context *sp_ctx = NULL; @@ -35,6 +37,11 @@ static NTSTATUS spnego_init_server(TALLOC_CTX *mem_ctx, return NT_STATUS_NO_MEMORY; } + sp_ctx->remote_address = tsocket_address_copy(remote_address, sp_ctx); + if (sp_ctx->remote_address == NULL) { + return NT_STATUS_NO_MEMORY; + } + sp_ctx->do_sign = do_sign; sp_ctx->do_seal = do_seal; sp_ctx->is_dcerpc = is_dcerpc; @@ -76,6 +83,7 @@ static NTSTATUS spnego_server_mech_init(struct spnego_context *sp_ctx, sp_ctx->is_dcerpc, token_in, token_out, + sp_ctx->remote_address, &ntlmssp_ctx); if (!NT_STATUS_IS_OK(status)) { DEBUG(0, ("Failed to init ntlmssp server " @@ -210,6 +218,7 @@ NTSTATUS spnego_server_auth_start(TALLOC_CTX *mem_ctx, bool is_dcerpc, DATA_BLOB *spnego_in, DATA_BLOB *spnego_out, + const struct tsocket_address *remote_address, struct spnego_context **spnego_ctx) { struct spnego_context *sp_ctx; @@ -223,7 +232,12 @@ NTSTATUS spnego_server_auth_start(TALLOC_CTX *mem_ctx, return NT_STATUS_INVALID_PARAMETER; } - status = spnego_init_server(mem_ctx, do_sign, do_seal, is_dcerpc, &sp_ctx); + status = spnego_init_server(mem_ctx, + do_sign, + do_seal, + is_dcerpc, + remote_address, + &sp_ctx); if (!NT_STATUS_IS_OK(status)) { return status; } -- cgit