diff options
author | Stefan Metzmacher <metze@samba.org> | 2008-11-23 11:24:29 +0100 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2008-11-23 11:48:20 +0100 |
commit | 3080fd66243f8f0c4b34be845a7dfd922242b685 (patch) | |
tree | cc115f2b7bf277d7aa2345763fd7df4318c4b15a /source4/rpc_server | |
parent | 09bc3a2f9c3847aafdb2e6cc2651baba62f2489e (diff) | |
download | samba-3080fd66243f8f0c4b34be845a7dfd922242b685.tar.gz samba-3080fd66243f8f0c4b34be845a7dfd922242b685.tar.bz2 samba-3080fd66243f8f0c4b34be845a7dfd922242b685.zip |
RPC sessions on np connections need the real session key transferred
Diffstat (limited to 'source4/rpc_server')
-rw-r--r-- | source4/rpc_server/dcerpc_server.c | 4 | ||||
-rw-r--r-- | source4/rpc_server/service_rpc.c | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/source4/rpc_server/dcerpc_server.c b/source4/rpc_server/dcerpc_server.c index 6f3f6799e7..6e888e5259 100644 --- a/source4/rpc_server/dcerpc_server.c +++ b/source4/rpc_server/dcerpc_server.c @@ -251,8 +251,8 @@ _PUBLIC_ NTSTATUS dcesrv_interface_register(struct dcesrv_context *dce_ctx, return NT_STATUS_OK; } -static NTSTATUS dcesrv_inherited_session_key(struct dcesrv_connection *p, - DATA_BLOB *session_key) +NTSTATUS dcesrv_inherited_session_key(struct dcesrv_connection *p, + DATA_BLOB *session_key) { if (p->auth_state.session_info->session_key.length) { *session_key = p->auth_state.session_info->session_key; diff --git a/source4/rpc_server/service_rpc.c b/source4/rpc_server/service_rpc.c index e526b17db1..bb4d6bdaf2 100644 --- a/source4/rpc_server/service_rpc.c +++ b/source4/rpc_server/service_rpc.c @@ -27,6 +27,7 @@ #include "auth/gensec/gensec.h" #include "../lib/util/dlinklist.h" #include "rpc_server/dcerpc_server.h" +#include "rpc_server/dcerpc_server_proto.h" #include "lib/events/events.h" #include "smbd/service_task.h" #include "smbd/service_stream.h" @@ -139,6 +140,10 @@ static void dcesrv_sock_accept(struct stream_connection *srv_conn) dcesrv_conn->transport.get_my_addr = dcesrv_sock_get_my_addr; dcesrv_conn->transport.get_peer_addr = dcesrv_sock_get_peer_addr; + if (dcesrv_sock->endpoint->ep_description->transport == NCACN_NP) { + dcesrv_conn->auth_state.session_key = dcesrv_inherited_session_key; + } + srv_conn->private = dcesrv_conn; irpc_add_name(srv_conn->msg_ctx, "rpc_server"); |