The branch, master has been updated via 7a7f28d... Revert "s3:smbd Fix segfault if register_existing_vuid() fails" via 3e50215... Revert "s3:smbd Give the kerberos session key a parent" via 34b29b1... Revert "s3:auth Change auth_ntlmssp_server_info API to return NTSTATUS" from 984fec2... s3-waf: fix the the waf build.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 7a7f28d96dd80d3ce175b0caee0c2169de7b810b Author: Volker Lendecke <v...@samba.org> Date: Tue Jun 8 10:26:43 2010 +0200 Revert "s3:smbd Fix segfault if register_existing_vuid() fails" This reverts commit 8f1cec5faf4e26de8b9797777059e99f2a66558b. commit 3e502159c751d85c09df4e74a63c95738fad2d7d Author: Volker Lendecke <v...@samba.org> Date: Tue Jun 8 10:26:35 2010 +0200 Revert "s3:smbd Give the kerberos session key a parent" This reverts commit 4a7f45b7e1cef13bc28d7ee50dd4b5519bdec397. commit 34b29b11986095531488cd0139ecec6dd22e55d3 Author: Volker Lendecke <v...@samba.org> Date: Tue Jun 8 10:26:08 2010 +0200 Revert "s3:auth Change auth_ntlmssp_server_info API to return NTSTATUS" This reverts commit edba46ce94c335411ab337eeb4ef6f88fb3aae80. Conflicts: source3/auth/auth_ntlmssp.c ----------------------------------------------------------------------- Summary of changes: source3/auth/auth_ntlmssp.c | 10 ++++------ source3/include/proto.h | 5 ++--- source3/rpc_server/srv_pipe.c | 7 +++---- source3/smbd/sesssetup.c | 20 +++++--------------- source3/smbd/smb2_sesssetup.c | 7 +++---- 5 files changed, 17 insertions(+), 32 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/auth/auth_ntlmssp.c b/source3/auth/auth_ntlmssp.c index 7184fa6..df4666a 100644 --- a/source3/auth/auth_ntlmssp.c +++ b/source3/auth/auth_ntlmssp.c @@ -84,9 +84,8 @@ void auth_ntlmssp_want_seal(struct auth_ntlmssp_state *auth_ntlmssp_state) } -NTSTATUS auth_ntlmssp_server_info(TALLOC_CTX *mem_ctx, - struct auth_ntlmssp_state *auth_ntlmssp_state, - struct auth_serversupplied_info **_server_info) +struct auth_serversupplied_info *auth_ntlmssp_server_info(TALLOC_CTX *mem_ctx, + struct auth_ntlmssp_state *auth_ntlmssp_state) { struct auth_serversupplied_info *server_info = auth_ntlmssp_state->server_info; data_blob_free(&server_info->user_session_key); @@ -96,11 +95,10 @@ NTSTATUS auth_ntlmssp_server_info(TALLOC_CTX *mem_ctx, auth_ntlmssp_state->ntlmssp_state->session_key.data, auth_ntlmssp_state->ntlmssp_state->session_key.length); if (auth_ntlmssp_state->ntlmssp_state->session_key.length && !server_info->user_session_key.data) { - return NT_STATUS_NO_MEMORY; + return NULL; } auth_ntlmssp_state->server_info = NULL; - *_server_info = talloc_steal(mem_ctx, server_info); - return NT_STATUS_OK; + return talloc_steal(mem_ctx, server_info); } struct ntlmssp_state *auth_ntlmssp_get_ntlmssp_state(struct auth_ntlmssp_state *auth_ntlmssp_state) diff --git a/source3/include/proto.h b/source3/include/proto.h index 2f68f0e..f0538ee 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -54,9 +54,8 @@ NTSTATUS auth_netlogond_init(void); /* The following definitions come from auth/auth_ntlmssp.c */ -NTSTATUS auth_ntlmssp_server_info(TALLOC_CTX *mem_ctx, - struct auth_ntlmssp_state *auth_ntlmssp_state, - struct auth_serversupplied_info **_server_info); +struct auth_serversupplied_info *auth_ntlmssp_server_info(TALLOC_CTX *mem_ctx, + struct auth_ntlmssp_state *auth_ntlmssp_state); struct ntlmssp_state *auth_ntlmssp_get_ntlmssp_state(struct auth_ntlmssp_state *auth_ntlmssp_state); const char *auth_ntlmssp_get_username(struct auth_ntlmssp_state *auth_ntlmssp_state); const char *auth_ntlmssp_get_domain(struct auth_ntlmssp_state *auth_ntlmssp_state); diff --git a/source3/rpc_server/srv_pipe.c b/source3/rpc_server/srv_pipe.c index 4678aeb..d1f9823 100644 --- a/source3/rpc_server/srv_pipe.c +++ b/source3/rpc_server/srv_pipe.c @@ -713,10 +713,9 @@ static bool pipe_ntlmssp_verify_final(pipes_struct *p, DATA_BLOB *p_resp_blob) TALLOC_FREE(p->server_info); - status = auth_ntlmssp_server_info(p, a, &p->server_info); - if (!NT_STATUS_IS_OK(status)) { - DEBUG(0, ("auth_ntlmssp_server_info failed to obtain the server info for authenticated user: %s\n", - nt_errstr(status))); + p->server_info = auth_ntlmssp_server_info(p, a); + if (p->server_info == NULL) { + DEBUG(0, ("auth_ntlmssp_server_info failed to obtain the server info for authenticated user\n")); return false; } diff --git a/source3/smbd/sesssetup.c b/source3/smbd/sesssetup.c index 28e5aea..dba6dab 100644 --- a/source3/smbd/sesssetup.c +++ b/source3/smbd/sesssetup.c @@ -561,8 +561,6 @@ static void reply_spnego_kerberos(struct smb_request *req, data_blob_free(&server_info->user_session_key); server_info->user_session_key = session_key; - talloc_steal(server_info, session_key.data); - session_key = data_blob_null; /* register_existing_vuid keeps the server info */ @@ -631,13 +629,12 @@ static void reply_spnego_ntlmssp(struct smb_request *req, const char *OID, bool wrap) { - bool do_invalidate = true; DATA_BLOB response; struct auth_serversupplied_info *server_info = NULL; struct smbd_server_connection *sconn = smbd_server_conn; if (NT_STATUS_IS_OK(nt_status)) { - nt_status = auth_ntlmssp_server_info(talloc_tos(), (*auth_ntlmssp_state), &server_info); + server_info = auth_ntlmssp_server_info(talloc_tos(), (*auth_ntlmssp_state)); } else { /* Note that this server_info won't have a session * key. But for map to guest, that's exactly the right @@ -666,11 +663,6 @@ static void reply_spnego_ntlmssp(struct smb_request *req, server_info, nullblob, auth_ntlmssp_get_username(*auth_ntlmssp_state)) != vuid) { - /* The problem is, *auth_ntlmssp_state points - * into the vuser this will have - * talloc_free()'ed in - * register_existing_vuid() */ - do_invalidate = false; nt_status = NT_STATUS_LOGON_FAILURE; goto out; } @@ -704,12 +696,10 @@ static void reply_spnego_ntlmssp(struct smb_request *req, if (!NT_STATUS_EQUAL(nt_status, NT_STATUS_MORE_PROCESSING_REQUIRED)) { /* NB. This is *NOT* an error case. JRA */ - if (do_invalidate) { - auth_ntlmssp_end(auth_ntlmssp_state); - if (!NT_STATUS_IS_OK(nt_status)) { - /* Kill the intermediate vuid */ - invalidate_vuid(sconn, vuid); - } + auth_ntlmssp_end(auth_ntlmssp_state); + if (!NT_STATUS_IS_OK(nt_status)) { + /* Kill the intermediate vuid */ + invalidate_vuid(sconn, vuid); } } } diff --git a/source3/smbd/smb2_sesssetup.c b/source3/smbd/smb2_sesssetup.c index 963dbe1..af91571 100644 --- a/source3/smbd/smb2_sesssetup.c +++ b/source3/smbd/smb2_sesssetup.c @@ -614,12 +614,11 @@ static NTSTATUS smbd_smb2_common_ntlmssp_auth_return(struct smbd_smb2_session *s uint64_t *out_session_id) { fstring tmp; - NTSTATUS status = auth_ntlmssp_server_info(session, session->auth_ntlmssp_state, - &session->server_info); - if (!NT_STATUS_IS_OK(status)) { + session->server_info = auth_ntlmssp_server_info(session, session->auth_ntlmssp_state); + if (!session->server_info) { auth_ntlmssp_end(&session->auth_ntlmssp_state); TALLOC_FREE(session); - return status; + return NT_STATUS_NO_MEMORY; } if ((in_security_mode & SMB2_NEGOTIATE_SIGNING_REQUIRED) || -- Samba Shared Repository