diff options
author | Andrew Tridgell <tridge@samba.org> | 2008-07-24 14:26:30 +1000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2008-07-24 14:26:30 +1000 |
commit | 66f09a7fd121cf7857b45dabc4fcaf32ae543552 (patch) | |
tree | f3dceee89ab41e1a3dc78849c9b57839000c77d3 /source4/rpc_server/dcerpc_server.c | |
parent | 2ecda9fde4aa00aecd6df6ebeb162d173853d146 (diff) | |
parent | 05583308fe8278f1bc0c815e23cf5e470a81e12f (diff) | |
download | samba-66f09a7fd121cf7857b45dabc4fcaf32ae543552.tar.gz samba-66f09a7fd121cf7857b45dabc4fcaf32ae543552.tar.bz2 samba-66f09a7fd121cf7857b45dabc4fcaf32ae543552.zip |
Merge branch 'v4-0-test' of ssh://git.samba.org/data/git/samba into v4-0-test
(This used to be commit 24309dbf4d9622fcfafa29ef98bc0459fdaa814b)
Diffstat (limited to 'source4/rpc_server/dcerpc_server.c')
-rw-r--r-- | source4/rpc_server/dcerpc_server.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/source4/rpc_server/dcerpc_server.c b/source4/rpc_server/dcerpc_server.c index d8dafd61f6..ac36825acd 100644 --- a/source4/rpc_server/dcerpc_server.c +++ b/source4/rpc_server/dcerpc_server.c @@ -270,11 +270,20 @@ NTSTATUS dcesrv_generic_session_key(struct dcesrv_connection *p, /* fetch the user session key - may be default (above) or the SMB session key + + The key is always truncated to 16 bytes */ _PUBLIC_ NTSTATUS dcesrv_fetch_session_key(struct dcesrv_connection *p, DATA_BLOB *session_key) { - return p->auth_state.session_key(p, session_key); + NTSTATUS status = p->auth_state.session_key(p, session_key); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + session_key->length = MIN(session_key->length, 16); + + return NT_STATUS_OK; } @@ -534,7 +543,18 @@ static NTSTATUS dcesrv_bind(struct dcesrv_call_state *call) uint32_t context_id; const struct dcesrv_interface *iface; - if (call->pkt.u.bind.assoc_group_id != 0) { + /* + * Association groups allow policy handles to be shared across + * multiple client connections. We don't implement this yet. + * + * So we just allow 0 if the client wants to create a new + * association group. + * + * And we allow the 0x12345678 value, we give away as + * assoc_group_id back to the clients + */ + if (call->pkt.u.bind.assoc_group_id != 0 && + call->pkt.u.bind.assoc_group_id != 0x12345678) { return dcesrv_bind_nak(call, 0); } |