diff options
author | Stefan Metzmacher <metze@samba.org> | 2008-06-09 21:45:19 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2008-07-28 14:09:45 +0200 |
commit | 8623e2cc4ca3b7fefcdc943c1da8a89b805f5d29 (patch) | |
tree | 7127d1be75bf922dfb0cd920dd532beda3269e7e /source4/smb_server/smb2/sesssetup.c | |
parent | 35bd7a6378cc25ed6b24d153c3cf1557d6126788 (diff) | |
download | samba-8623e2cc4ca3b7fefcdc943c1da8a89b805f5d29.tar.gz samba-8623e2cc4ca3b7fefcdc943c1da8a89b805f5d29.tar.bz2 samba-8623e2cc4ca3b7fefcdc943c1da8a89b805f5d29.zip |
smb2srv: correctly hold the signing state per session
metze
(This used to be commit 5b3ba3f3556e8031133128853cd2324ee3852aa1)
Diffstat (limited to 'source4/smb_server/smb2/sesssetup.c')
-rw-r--r-- | source4/smb_server/smb2/sesssetup.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/source4/smb_server/smb2/sesssetup.c b/source4/smb_server/smb2/sesssetup.c index 9fb3220005..6e3e963794 100644 --- a/source4/smb_server/smb2/sesssetup.c +++ b/source4/smb_server/smb2/sesssetup.c @@ -90,6 +90,10 @@ static void smb2srv_sesssetup_callback(struct gensec_update_request *greq, void } req->session = smb_sess; + if (smb_sess->smb2_signing.required) { + /* activate smb2 signing on the session */ + smb_sess->smb2_signing.active = true; + } done: io->smb2.out.uid = smb_sess->vuid; failed: @@ -182,7 +186,15 @@ static void smb2srv_sesssetup_backend(struct smb2srv_request *req, union smb_ses This is deliberate as windows does not set it even when it does set SMB2_NEGOTIATE_SIGNING_REQUIRED */ if (io->smb2.in.security_mode & SMB2_NEGOTIATE_SIGNING_REQUIRED) { - req->smb_conn->doing_signing = true; + smb_sess->smb2_signing.required = true; + } else if (req->smb_conn->smb2_signing_required) { + /* + * if required signing was negotiates in SMB2 Negotiate + * then the client made an error not using it here + */ + DEBUG(1, ("SMB2 signing required on the connection but not used on session\n")); + req->status = NT_STATUS_FOOBAR; + goto failed; } return; |