summaryrefslogtreecommitdiffstats
path: root/source4/librpc/rpc/dcerpc_util.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2004-04-28 13:17:28 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:51:37 -0500
commit3fe884c26c772fca65470c45540d37a58deda403 (patch)
treefc0689041a9f9a2ab0c97d37667fbdb7231c5c9c /source4/librpc/rpc/dcerpc_util.c
parent932b0ff5f5f5ce861a45df4a986b0db73a52e510 (diff)
downloadsamba-3fe884c26c772fca65470c45540d37a58deda403.tar.gz
samba-3fe884c26c772fca65470c45540d37a58deda403.tar.xz
samba-3fe884c26c772fca65470c45540d37a58deda403.zip
r390: added my best guess for how session keys are supposed to work when you
use NTLMSSP sign or seal at the RPC layer It doesn't work yet, but then again neither does the old code (which just assumed the SMB session key was used, which of course makes no sense on a ncacn_ip_tcp connection) (This used to be commit e8782329269bc78d36d8ca83fb7a4e38b9c6b167)
Diffstat (limited to 'source4/librpc/rpc/dcerpc_util.c')
-rw-r--r--source4/librpc/rpc/dcerpc_util.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/source4/librpc/rpc/dcerpc_util.c b/source4/librpc/rpc/dcerpc_util.c
index b52631670b..0e045e0033 100644
--- a/source4/librpc/rpc/dcerpc_util.c
+++ b/source4/librpc/rpc/dcerpc_util.c
@@ -677,14 +677,23 @@ NTSTATUS dcerpc_fetch_session_key(struct dcerpc_pipe *p,
{
struct cli_tree *tree;
+ memset(session_key, 0, 16);
+
tree = dcerpc_smb_tree(p);
- if (!tree) {
- return NT_STATUS_INVALID_PARAMETER;
+ if (tree) {
+ memcpy(session_key,
+ tree->session->transport->negotiate.user_session_key,
+ 16);
}
- memcpy(session_key,
- tree->session->transport->negotiate.user_session_key,
- 16);
+ if (p->security_state) {
+ NTSTATUS status;
+
+ status = p->security_state->session_key(p->security_state, session_key);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
+ }
+ }
return NT_STATUS_OK;
}