[SCM] Samba Shared Repository - branch master updated
Simo Sorce
idra at samba.org
Wed Jul 21 17:15:36 MDT 2010
The branch, master has been updated
via 61cfbf3... s3-rpc_server: Cleanup the way we free pipe auth data
via 636de43... cleaup: Reformat cli_get_session_key()
from 3b502d8... s3-dcerpc: Fix potential memleak
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 61cfbf342fb508477bd45ed8378af7ba6f147727
Author: Simo Sorce <idra at samba.org>
Date: Sat Jul 17 16:34:33 2010 -0400
s3-rpc_server: Cleanup the way we free pipe auth data
commit 636de433ac9cb658c35b8fc45933d8dcb98a991e
Author: Simo Sorce <idra at samba.org>
Date: Mon Jul 19 15:43:22 2010 -0400
cleaup: Reformat cli_get_session_key()
merge cli_get_session_key
-----------------------------------------------------------------------
Summary of changes:
source3/rpc_client/cli_pipe.c | 43 ++++++++++++++++++++---------------------
source3/rpc_server/srv_pipe.c | 23 ++++++++++++---------
2 files changed, 34 insertions(+), 32 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/rpc_client/cli_pipe.c b/source3/rpc_client/cli_pipe.c
index c3712f7..6de2e80 100644
--- a/source3/rpc_client/cli_pipe.c
+++ b/source3/rpc_client/cli_pipe.c
@@ -3836,6 +3836,7 @@ NTSTATUS cli_get_session_key(TALLOC_CTX *mem_ctx,
struct rpc_pipe_client *cli,
DATA_BLOB *session_key)
{
+ struct pipe_auth_data *a = cli->auth;
DATA_BLOB sk;
if (!session_key || !cli) {
@@ -3847,29 +3848,27 @@ NTSTATUS cli_get_session_key(TALLOC_CTX *mem_ctx,
}
switch (cli->auth->auth_type) {
- case PIPE_AUTH_TYPE_SCHANNEL:
- *session_key = data_blob_talloc(mem_ctx,
- cli->auth->a_u.schannel_auth->creds->session_key, 16);
- break;
- case PIPE_AUTH_TYPE_NTLMSSP:
- case PIPE_AUTH_TYPE_SPNEGO_NTLMSSP:
- sk = auth_ntlmssp_get_session_key(cli->auth->a_u.auth_ntlmssp_state);
- *session_key = data_blob_dup_talloc(mem_ctx, &sk);
- break;
- case PIPE_AUTH_TYPE_KRB5:
- case PIPE_AUTH_TYPE_SPNEGO_KRB5:
- *session_key = data_blob_talloc(mem_ctx,
- cli->auth->a_u.kerberos_auth->session_key.data,
- cli->auth->a_u.kerberos_auth->session_key.length);
- break;
- case PIPE_AUTH_TYPE_NONE:
- *session_key = data_blob_talloc(mem_ctx,
- cli->auth->user_session_key.data,
- cli->auth->user_session_key.length);
- break;
- default:
- return NT_STATUS_NO_USER_SESSION_KEY;
+ case PIPE_AUTH_TYPE_SCHANNEL:
+ sk = data_blob_const(a->a_u.schannel_auth->creds->session_key,
+ 16);
+ break;
+ case PIPE_AUTH_TYPE_NTLMSSP:
+ case PIPE_AUTH_TYPE_SPNEGO_NTLMSSP:
+ sk = auth_ntlmssp_get_session_key(a->a_u.auth_ntlmssp_state);
+ break;
+ case PIPE_AUTH_TYPE_KRB5:
+ case PIPE_AUTH_TYPE_SPNEGO_KRB5:
+ sk = data_blob_const(a->a_u.kerberos_auth->session_key.data,
+ a->a_u.kerberos_auth->session_key.length);
+ break;
+ case PIPE_AUTH_TYPE_NONE:
+ sk = data_blob_const(a->user_session_key.data,
+ a->user_session_key.length);
+ break;
+ default:
+ return NT_STATUS_NO_USER_SESSION_KEY;
}
+ *session_key = data_blob_dup_talloc(mem_ctx, &sk);
return NT_STATUS_OK;
}
diff --git a/source3/rpc_server/srv_pipe.c b/source3/rpc_server/srv_pipe.c
index 508cb3f..056bf58 100644
--- a/source3/rpc_server/srv_pipe.c
+++ b/source3/rpc_server/srv_pipe.c
@@ -94,6 +94,14 @@ static void free_pipe_schannel_auth_data(struct pipe_auth_data *auth)
TALLOC_FREE(auth->a_u.schannel_auth);
}
+static void free_pipe_auth_data(struct pipe_auth_data *auth)
+{
+ if (auth->auth_data_free_func) {
+ (*auth->auth_data_free_func)(auth);
+ auth->auth_data_free_func = NULL;
+ }
+}
+
static DATA_BLOB generic_session_key(void)
{
return data_blob("SystemLibraryDTC", 16);
@@ -602,8 +610,7 @@ bool api_pipe_bind_auth3(pipes_struct *p, struct ncacn_packet *pkt)
err:
- free_pipe_ntlmssp_auth_data(&p->auth);
- p->auth.a_u.auth_ntlmssp_state = NULL;
+ free_pipe_auth_data(&p->auth);
return False;
}
@@ -651,9 +658,7 @@ static bool setup_bind_nak(pipes_struct *p, struct ncacn_packet *pkt)
p->out_data.data_sent_length = 0;
p->out_data.current_pdu_sent = 0;
- if (p->auth.auth_data_free_func) {
- (*p->auth.auth_data_free_func)(&p->auth);
- }
+ free_pipe_auth_data(&p->auth);
p->auth.auth_level = DCERPC_AUTH_LEVEL_NONE;
p->auth.auth_type = PIPE_AUTH_TYPE_NONE;
p->pipe_bound = False;
@@ -860,7 +865,7 @@ static bool pipe_spnego_auth_bind_negotiate(pipes_struct *p,
if (p->auth.auth_type == PIPE_AUTH_TYPE_SPNEGO_NTLMSSP && p->auth.a_u.auth_ntlmssp_state) {
/* Free any previous auth type. */
- free_pipe_ntlmssp_auth_data(&p->auth);
+ free_pipe_auth_data(&p->auth);
}
if (!got_kerberos_mechanism) {
@@ -988,8 +993,7 @@ static bool pipe_spnego_auth_bind_continue(pipes_struct *p,
data_blob_free(&auth_blob);
data_blob_free(&auth_reply);
- free_pipe_ntlmssp_auth_data(&p->auth);
- p->auth.a_u.auth_ntlmssp_state = NULL;
+ free_pipe_auth_data(&p->auth);
return False;
}
@@ -1170,8 +1174,7 @@ static bool pipe_ntlmssp_auth_bind(pipes_struct *p,
err:
- free_pipe_ntlmssp_auth_data(&p->auth);
- p->auth.a_u.auth_ntlmssp_state = NULL;
+ TALLOC_FREE(a);
return False;
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list