rpc_client: let cli_get_session_key() return talloced session key.
authorGünther Deschner <gd@samba.org>
Tue, 24 Jun 2008 22:21:37 +0000 (00:21 +0200)
committerGünther Deschner <gd@samba.org>
Wed, 25 Jun 2008 07:51:31 +0000 (09:51 +0200)
Thanks, Volker, for pointing this out.

Guenther
(This used to be commit b47899195e0c190445953243fe80da4e92994dd1)

source3/include/proto.h
source3/libnet/libnet_dssync.c
source3/rpc_client/cli_pipe.c

index 70ab390dc17438762c78aa2b52d153fbeba1e94b..1aca7f436d545bc8f9bb26db5ecb9abf2dc713db 100644 (file)
@@ -7130,7 +7130,8 @@ struct rpc_pipe_client *cli_rpc_pipe_open_krb5(struct cli_state *cli,
                                                const char *username,
                                                const char *password,
                                                NTSTATUS *perr);
-NTSTATUS cli_get_session_key(struct rpc_pipe_client *cli,
+NTSTATUS cli_get_session_key(TALLOC_CTX *mem_ctx,
+                            struct rpc_pipe_client *cli,
                             DATA_BLOB *session_key);
 
 
index 63a5c8bef1916f8a8c13d5fe6ffa54fc659e30dd..b1392acd7e216089e24273e8d78da8844185bbc2 100644 (file)
@@ -268,7 +268,7 @@ static NTSTATUS libnet_dssync_process(TALLOC_CTX *mem_ctx,
                        ctr1 = ctr.ctr2.ctr.mszip1.ctr1;
                }
 
-               status = cli_get_session_key(ctx->cli, &ctx->session_key);
+               status = cli_get_session_key(mem_ctx, ctx->cli, &ctx->session_key);
                if (!NT_STATUS_IS_OK(status)) {
                        return status;
                }
index 469142d146c76951b7b370877065c75a5185699e..da81417220d9c44da9a13023c559add29465f7c0 100644 (file)
@@ -3341,7 +3341,8 @@ struct rpc_pipe_client *cli_rpc_pipe_open_krb5(struct cli_state *cli,
 #endif
 }
 
-NTSTATUS cli_get_session_key(struct rpc_pipe_client *cli,
+NTSTATUS cli_get_session_key(TALLOC_CTX *mem_ctx,
+                            struct rpc_pipe_client *cli,
                             DATA_BLOB *session_key)
 {
        if (!session_key || !cli) {
@@ -3354,15 +3355,20 @@ NTSTATUS cli_get_session_key(struct rpc_pipe_client *cli,
 
        switch (cli->auth->auth_type) {
                case PIPE_AUTH_TYPE_SCHANNEL:
-                       *session_key = data_blob(cli->auth->a_u.schannel_auth->sess_key, 16);
+                       *session_key = data_blob_talloc(mem_ctx,
+                               cli->auth->a_u.schannel_auth->sess_key, 16);
                        break;
                case PIPE_AUTH_TYPE_NTLMSSP:
                case PIPE_AUTH_TYPE_SPNEGO_NTLMSSP:
-                       *session_key = cli->auth->a_u.ntlmssp_state->session_key;
+                       *session_key = data_blob_talloc(mem_ctx,
+                               cli->auth->a_u.ntlmssp_state->session_key.data,
+                               cli->auth->a_u.ntlmssp_state->session_key.length);
                        break;
                case PIPE_AUTH_TYPE_KRB5:
                case PIPE_AUTH_TYPE_SPNEGO_KRB5:
-                       *session_key = cli->auth->a_u.kerberos_auth->session_key;
+                       *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:
                default: