diff options
author | Stefan Metzmacher <metze@samba.org> | 2014-06-12 09:49:28 +0200 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2014-08-06 09:51:14 +0200 |
commit | bd19fd1286821433fc9080e91316b831ef501a1d (patch) | |
tree | bd1f142dbdb3558568945c5e314b6cdad1be3e71 /source3 | |
parent | d47c006d9d45eb65691b87f07d90e63785bc2f4e (diff) | |
download | samba-bd19fd1286821433fc9080e91316b831ef501a1d.tar.gz |
s3:smbd: remember the time of the session setup auth_time
This is the time of the last reauth.
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'source3')
-rw-r--r-- | source3/librpc/idl/smbXsrv.idl | 1 | ||||
-rw-r--r-- | source3/smbd/sesssetup.c | 3 | ||||
-rw-r--r-- | source3/smbd/smb2_sesssetup.c | 2 |
3 files changed, 6 insertions, 0 deletions
diff --git a/source3/librpc/idl/smbXsrv.idl b/source3/librpc/idl/smbXsrv.idl index 36710dddd57..ca5c3f3fde9 100644 --- a/source3/librpc/idl/smbXsrv.idl +++ b/source3/librpc/idl/smbXsrv.idl @@ -98,6 +98,7 @@ interface smbXsrv * auth_session is NULL until the * session is valid for the first time. */ + NTTIME auth_time; uint32 auth_session_info_seqnum; auth_session_info *auth_session_info; uint16 connection_dialect; diff --git a/source3/smbd/sesssetup.c b/source3/smbd/sesssetup.c index b5e8d878d8a..f00a55c2dfa 100644 --- a/source3/smbd/sesssetup.c +++ b/source3/smbd/sesssetup.c @@ -354,6 +354,7 @@ static void reply_sesssetup_and_X_spnego(struct smb_request *req) session->global->auth_session_info_seqnum += 1; session->global->channels[0].auth_session_info_seqnum = session->global->auth_session_info_seqnum; + session->global->auth_time = now; if (client_caps & CAP_DYNAMIC_REAUTH) { session->global->expiration_time = gensec_expire_time(session->gensec); @@ -441,6 +442,7 @@ static void reply_sesssetup_and_X_spnego(struct smb_request *req) session->global->auth_session_info_seqnum += 1; session->global->channels[0].auth_session_info_seqnum = session->global->auth_session_info_seqnum; + session->global->auth_time = now; if (client_caps & CAP_DYNAMIC_REAUTH) { session->global->expiration_time = gensec_expire_time(session->gensec); @@ -1052,6 +1054,7 @@ void reply_sesssetup_and_X(struct smb_request *req) session->global->auth_session_info_seqnum += 1; session->global->channels[0].auth_session_info_seqnum = session->global->auth_session_info_seqnum; + session->global->auth_time = now; session->global->expiration_time = GENSEC_EXPIRE_TIME_INFINITY; nt_status = smbXsrv_session_update(session); diff --git a/source3/smbd/smb2_sesssetup.c b/source3/smbd/smb2_sesssetup.c index 9004e691bb5..b31df84dbed 100644 --- a/source3/smbd/smb2_sesssetup.c +++ b/source3/smbd/smb2_sesssetup.c @@ -341,6 +341,7 @@ static NTSTATUS smbd_smb2_auth_generic_return(struct smbXsrv_session *session, session->global->auth_session_info_seqnum += 1; session->global->channels[0].auth_session_info_seqnum = session->global->auth_session_info_seqnum; + session->global->auth_time = timeval_to_nttime(&smb2req->request_time); session->global->expiration_time = gensec_expire_time(session->gensec); if (!session_claim(session)) { @@ -409,6 +410,7 @@ static NTSTATUS smbd_smb2_reauth_generic_return(struct smbXsrv_session *session, session->global->auth_session_info_seqnum += 1; session->global->channels[0].auth_session_info_seqnum = session->global->auth_session_info_seqnum; + session->global->auth_time = timeval_to_nttime(&smb2req->request_time); session->global->expiration_time = gensec_expire_time(session->gensec); status = smbXsrv_session_update(session); |