1
0
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:
Simo Sorce 2010-07-16 18:33:38 -04:00 committed by Andrew Bartlett
parent 0bb8d133c9
commit a04bbd281c
5 changed files with 20 additions and 17 deletions

View File

@ -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;
}

View File

@ -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);

View File

@ -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)));

View File

@ -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

View File

@ -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 {