Remove use of talloc_reference in cli_rpc_pipe_open_schannel_with_key()
authorAndrew Bartlett <abartlet@samba.org>
Mon, 20 Apr 2009 14:50:49 +0000 (16:50 +0200)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 20 Apr 2009 14:50:49 +0000 (16:50 +0200)
source3/include/proto.h
source3/libnet/libnet_join.c
source3/rpc_client/cli_pipe.c
source3/utils/net_rpc_join.c
source3/winbindd/winbindd_cm.c

index 9b27ca608a158aa3cfb456875ee7a966b38a58d9..4cb908b66546a6090e705ff71b869878b7eee6a3 100644 (file)
@@ -5244,7 +5244,7 @@ NTSTATUS cli_rpc_pipe_open_schannel_with_key(struct cli_state *cli,
                                             const struct ndr_syntax_id *interface,
                                             enum pipe_auth_level auth_level,
                                             const char *domain,
-                                            struct netlogon_creds_CredentialState *pdc,
+                                            struct netlogon_creds_CredentialState **pdc,
                                             struct rpc_pipe_client **presult);
 NTSTATUS cli_rpc_pipe_open_ntlmssp_auth_schannel(struct cli_state *cli,
                                                 const struct ndr_syntax_id *interface,
index 724cc90596a2b9585038216cbd608d0cc377da8a..8e75d36fe33b9b4b31e1fbb8669474e4c0289111 100644 (file)
@@ -1072,7 +1072,7 @@ NTSTATUS libnet_join_ok(const char *netbios_domain_name,
 
        status = cli_rpc_pipe_open_schannel_with_key(
                cli, &ndr_table_netlogon.syntax_id, PIPE_AUTH_LEVEL_PRIVACY,
-               netbios_domain_name, netlogon_pipe->dc, &pipe_hnd);
+               netbios_domain_name, &netlogon_pipe->dc, &pipe_hnd);
 
        cli_shutdown(cli);
 
index 567794db88d8f0e0f44eab958260250210d4444c..3d7db068d5c1c1ff54040234180c91d639450935 100644 (file)
@@ -3845,13 +3845,15 @@ NTSTATUS get_schannel_session_key(struct cli_state *cli,
  External interface.
  Open a named pipe to an SMB server and bind using schannel (bind type 68)
  using session_key. sign and seal.
+
+ The *pdc will be stolen onto this new pipe
  ****************************************************************************/
 
 NTSTATUS cli_rpc_pipe_open_schannel_with_key(struct cli_state *cli,
                                             const struct ndr_syntax_id *interface,
                                             enum pipe_auth_level auth_level,
                                             const char *domain,
-                                            struct netlogon_creds_CredentialState *pdc,
+                                            struct netlogon_creds_CredentialState **pdc,
                                             struct rpc_pipe_client **presult)
 {
        struct rpc_pipe_client *result;
@@ -3864,7 +3866,7 @@ NTSTATUS cli_rpc_pipe_open_schannel_with_key(struct cli_state *cli,
        }
 
        status = rpccli_schannel_bind_data(result, domain, auth_level,
-                                          pdc->session_key, &auth);
+                                          (*pdc)->session_key, &auth);
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0, ("rpccli_schannel_bind_data returned %s\n",
                          nt_errstr(status)));
@@ -3885,7 +3887,7 @@ NTSTATUS cli_rpc_pipe_open_schannel_with_key(struct cli_state *cli,
         * The credentials on a new netlogon pipe are the ones we are passed
         * in - reference them in
         */
-       result->dc = talloc_reference(result, pdc);
+       result->dc = talloc_move(result, pdc);
        if (result->dc == NULL) {
                DEBUG(0, ("talloc reference failed\n"));
                TALLOC_FREE(result);
@@ -3964,7 +3966,7 @@ NTSTATUS cli_rpc_pipe_open_ntlmssp_auth_schannel(struct cli_state *cli,
        }
 
        status = cli_rpc_pipe_open_schannel_with_key(
-               cli, interface, auth_level, domain, netlogon_pipe->dc,
+               cli, interface, auth_level, domain, &netlogon_pipe->dc,
                &result);
 
        /* Now we've bound using the session key we can close the netlog pipe. */
@@ -4002,7 +4004,7 @@ NTSTATUS cli_rpc_pipe_open_schannel(struct cli_state *cli,
        }
 
        status = cli_rpc_pipe_open_schannel_with_key(
-               cli, interface, auth_level, domain, netlogon_pipe->dc,
+               cli, interface, auth_level, domain, &netlogon_pipe->dc,
                &result);
 
        /* Now we've bound using the session key we can close the netlog pipe. */
index 58d6cdc5af93c8d344a0e6bf94dce22a0d38675a..1587793bdc0f7028d6125e9b5da8c6d43abc5d4d 100644 (file)
@@ -102,7 +102,7 @@ NTSTATUS net_rpc_join_ok(struct net_context *c, const char *domain,
 
        ntret = cli_rpc_pipe_open_schannel_with_key(
                cli, &ndr_table_netlogon.syntax_id, PIPE_AUTH_LEVEL_PRIVACY,
-               domain, netlogon_pipe->dc, &pipe_hnd);
+               domain, &netlogon_pipe->dc, &pipe_hnd);
 
        if (!NT_STATUS_IS_OK(ntret)) {
                DEBUG(0,("net_rpc_join_ok: failed to open schannel session "
index f22f213eec6a927c41f6084a99c1eb73199e98a8..e9cf05e90b7d639df3389756a5607386fce30fea 100644 (file)
@@ -2090,7 +2090,7 @@ NTSTATUS cm_connect_sam(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx,
        }
        result = cli_rpc_pipe_open_schannel_with_key
                (conn->cli, &ndr_table_samr.syntax_id, PIPE_AUTH_LEVEL_PRIVACY,
-                domain->name, p_creds, &conn->samr_pipe);
+                domain->name, &p_creds, &conn->samr_pipe);
 
        if (!NT_STATUS_IS_OK(result)) {
                DEBUG(10,("cm_connect_sam: failed to connect to SAMR pipe for "