diff options
author | Stefan Metzmacher <metze@samba.org> | 2012-01-25 09:02:15 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2012-01-31 20:17:10 +0100 |
commit | 3383ebbe7edaf902a511bd3be964d7ae56b62610 (patch) | |
tree | 36765328c42124e99c5492efb9a15125984be2b5 | |
parent | 58e401fae28728d7f28106216b4bbffa8cb0df93 (diff) | |
download | samba-3383ebbe7edaf902a511bd3be964d7ae56b62610.tar.gz samba-3383ebbe7edaf902a511bd3be964d7ae56b62610.tar.bz2 samba-3383ebbe7edaf902a511bd3be964d7ae56b62610.zip |
s3:smbd: rework smbd_smb2_*_ntlmssp_auth* to smbd_smb2_auth_generic*
metze
-rw-r--r-- | source3/smbd/smb2_sesssetup.c | 50 |
1 files changed, 28 insertions, 22 deletions
diff --git a/source3/smbd/smb2_sesssetup.c b/source3/smbd/smb2_sesssetup.c index 3f6a2d7d51..1a6f7697ff 100644 --- a/source3/smbd/smb2_sesssetup.c +++ b/source3/smbd/smb2_sesssetup.c @@ -138,7 +138,7 @@ static int smbd_smb2_session_destructor(struct smbd_smb2_session *session) return 0; } -static NTSTATUS smbd_smb2_common_ntlmssp_auth_return(struct smbd_smb2_session *session, +static NTSTATUS smbd_smb2_auth_generic_return(struct smbd_smb2_session *session, struct smbd_smb2_request *smb2req, uint8_t in_security_mode, DATA_BLOB in_security_buffer, @@ -212,13 +212,13 @@ static NTSTATUS smbd_smb2_common_ntlmssp_auth_return(struct smbd_smb2_session *s return NT_STATUS_OK; } -static NTSTATUS smbd_smb2_raw_ntlmssp_auth(struct smbd_smb2_session *session, - struct smbd_smb2_request *smb2req, - uint8_t in_security_mode, - DATA_BLOB in_security_buffer, - uint16_t *out_session_flags, - DATA_BLOB *out_security_buffer, - uint64_t *out_session_id) +static NTSTATUS smbd_smb2_auth_generic(struct smbd_smb2_session *session, + struct smbd_smb2_request *smb2req, + uint8_t in_security_mode, + DATA_BLOB in_security_buffer, + uint16_t *out_session_flags, + DATA_BLOB *out_security_buffer, + uint64_t *out_session_id) { NTSTATUS status; @@ -246,11 +246,17 @@ static NTSTATUS smbd_smb2_raw_ntlmssp_auth(struct smbd_smb2_session *session, } } - /* RAW NTLMSSP */ + become_root(); status = gensec_update(session->gensec_security, smb2req, NULL, in_security_buffer, out_security_buffer); + unbecome_root(); + if (!NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED) && + !NT_STATUS_IS_OK(status)) { + TALLOC_FREE(session); + return nt_status_squash(status); + } if (NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED)) { *out_session_id = session->vuid; @@ -267,12 +273,12 @@ static NTSTATUS smbd_smb2_raw_ntlmssp_auth(struct smbd_smb2_session *session, } *out_session_id = session->vuid; - return smbd_smb2_common_ntlmssp_auth_return(session, - smb2req, - in_security_mode, - in_security_buffer, - out_session_flags, - out_session_id); + return smbd_smb2_auth_generic_return(session, + smb2req, + in_security_mode, + in_security_buffer, + out_session_flags, + out_session_id); } static NTSTATUS smbd_smb2_session_setup(struct smbd_smb2_request *smb2req, @@ -331,13 +337,13 @@ static NTSTATUS smbd_smb2_session_setup(struct smbd_smb2_request *smb2req, return NT_STATUS_REQUEST_NOT_ACCEPTED; } - return smbd_smb2_raw_ntlmssp_auth(session, - smb2req, - in_security_mode, - in_security_buffer, - out_session_flags, - out_security_buffer, - out_session_id); + return smbd_smb2_auth_generic(session, + smb2req, + in_security_mode, + in_security_buffer, + out_session_flags, + out_security_buffer, + out_session_id); } NTSTATUS smbd_smb2_request_process_logoff(struct smbd_smb2_request *req) |