mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
s3-auth: Refactor and rename auth_ntlmssp_server_info()
Rename it to auth_ntlmssp_steal_server_info() to make it clear that the server_info struct is stolen from the auth_ntlmssp_state structure. Use talloc_move instead of manual steal&clear Add comments to explain what is going on. Signed-off-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
parent
0bb8d133c9
commit
a04bbd281c
@ -83,23 +83,25 @@ 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)
|
||||
NTSTATUS auth_ntlmssp_steal_server_info(TALLOC_CTX *mem_ctx,
|
||||
struct auth_ntlmssp_state *auth_ntlmssp_state,
|
||||
struct auth_serversupplied_info **server_info)
|
||||
{
|
||||
struct auth_serversupplied_info *server_info = auth_ntlmssp_state->server_info;
|
||||
data_blob_free(&server_info->user_session_key);
|
||||
server_info->user_session_key =
|
||||
/* Free the current server_info user_session_key and reset it from the
|
||||
* current ntlmssp_state session_key */
|
||||
data_blob_free(&auth_ntlmssp_state->server_info->user_session_key);
|
||||
auth_ntlmssp_state->server_info->user_session_key =
|
||||
data_blob_talloc(
|
||||
server_info,
|
||||
auth_ntlmssp_state->server_info,
|
||||
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) {
|
||||
*_server_info = NULL;
|
||||
if (auth_ntlmssp_state->ntlmssp_state->session_key.length &&
|
||||
!auth_ntlmssp_state->server_info->user_session_key.data) {
|
||||
*server_info = NULL;
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
auth_ntlmssp_state->server_info = NULL;
|
||||
*_server_info = talloc_steal(mem_ctx, server_info);
|
||||
/* Steal server_info away from auth_ntlmssp_state */
|
||||
*server_info = talloc_move(mem_ctx, &auth_ntlmssp_state->server_info);
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
|
@ -54,9 +54,9 @@ 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);
|
||||
NTSTATUS auth_ntlmssp_steal_server_info(TALLOC_CTX *mem_ctx,
|
||||
struct auth_ntlmssp_state *auth_ntlmssp_state,
|
||||
struct auth_serversupplied_info **server_info);
|
||||
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);
|
||||
|
@ -502,7 +502,7 @@ 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);
|
||||
status = auth_ntlmssp_steal_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)));
|
||||
|
@ -640,7 +640,8 @@ static void reply_spnego_ntlmssp(struct smb_request *req,
|
||||
struct smbd_server_connection *sconn = req->sconn;
|
||||
|
||||
if (NT_STATUS_IS_OK(nt_status)) {
|
||||
nt_status = auth_ntlmssp_server_info(talloc_tos(), (*auth_ntlmssp_state), &server_info);
|
||||
nt_status = auth_ntlmssp_steal_server_info(talloc_tos(),
|
||||
(*auth_ntlmssp_state), &server_info);
|
||||
} else {
|
||||
/* Note that this server_info won't have a session
|
||||
* key. But for map to guest, that's exactly the right
|
||||
|
@ -147,7 +147,7 @@ static NTSTATUS setup_ntlmssp_server_info(struct smbd_smb2_session *session,
|
||||
NTSTATUS status)
|
||||
{
|
||||
if (NT_STATUS_IS_OK(status)) {
|
||||
status = auth_ntlmssp_server_info(session,
|
||||
status = auth_ntlmssp_steal_server_info(session,
|
||||
session->auth_ntlmssp_state,
|
||||
&session->server_info);
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user