summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2008-04-19 18:17:13 +0200
committerVolker Lendecke <vl@samba.org>2008-04-20 00:12:52 +0200
commitb46d340fd5d7e88684ac77000e17c1899ff608b2 (patch)
treed234eb0582e41f91dc7c200c98c0752927c707e0 /source3
parentfb73de3b927e02fbc056565714ecbe83c7645dc2 (diff)
downloadsamba-b46d340fd5d7e88684ac77000e17c1899ff608b2.tar.gz
samba-b46d340fd5d7e88684ac77000e17c1899ff608b2.tar.bz2
samba-b46d340fd5d7e88684ac77000e17c1899ff608b2.zip
Refactoring: Make struct rpc_pipe_client its own talloc parent
(This used to be commit a6d74a5a562b54f0b36934965f545fdeb1e8b34a)
Diffstat (limited to 'source3')
-rw-r--r--source3/include/client.h2
-rw-r--r--source3/libsmb/clientgen.c2
-rw-r--r--source3/libsmb/passchange.c13
-rw-r--r--source3/rpc_client/cli_netlogon.c4
-rw-r--r--source3/rpc_client/cli_pipe.c32
-rw-r--r--source3/smbd/change_trust_pw.c3
6 files changed, 24 insertions, 32 deletions
diff --git a/source3/include/client.h b/source3/include/client.h
index 0e73745edb..3c0b65576c 100644
--- a/source3/include/client.h
+++ b/source3/include/client.h
@@ -60,8 +60,6 @@ struct cli_pipe_auth_data {
struct rpc_pipe_client {
struct rpc_pipe_client *prev, *next;
- TALLOC_CTX *mem_ctx;
-
struct cli_state *cli;
int pipe_idx;
diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c
index 64191239d3..860cb948ac 100644
--- a/source3/libsmb/clientgen.c
+++ b/source3/libsmb/clientgen.c
@@ -650,7 +650,7 @@ bool cli_rpc_pipe_close(struct rpc_pipe_client *cli)
cli->pipe_name, cli->cli->desthost ));
DLIST_REMOVE(cli->cli->pipe_list, cli);
- talloc_destroy(cli->mem_ctx);
+ talloc_destroy(cli);
return ret;
}
diff --git a/source3/libsmb/passchange.c b/source3/libsmb/passchange.c
index 468750f801..2f9a87dee4 100644
--- a/source3/libsmb/passchange.c
+++ b/source3/libsmb/passchange.c
@@ -177,8 +177,9 @@ NTSTATUS remote_password_change(const char *remote_machine, const char *user_nam
}
}
- if (NT_STATUS_IS_OK(result = rpccli_samr_chgpasswd_user(pipe_hnd, pipe_hnd->mem_ctx, user_name,
- new_passwd, old_passwd))) {
+ result = rpccli_samr_chgpasswd_user(pipe_hnd, talloc_tos(),
+ user_name, new_passwd, old_passwd);
+ if (NT_STATUS_IS_OK(result)) {
/* Great - it all worked! */
cli_shutdown(cli);
return NT_STATUS_OK;
@@ -206,11 +207,9 @@ NTSTATUS remote_password_change(const char *remote_machine, const char *user_nam
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SAMR, &result);
if ( pipe_hnd &&
- (NT_STATUS_IS_OK(result = rpccli_samr_chgpasswd_user(pipe_hnd,
- pipe_hnd->mem_ctx,
- user_name,
- new_passwd,
- old_passwd)))) {
+ (NT_STATUS_IS_OK(result = rpccli_samr_chgpasswd_user(
+ pipe_hnd, talloc_tos(), user_name,
+ new_passwd, old_passwd)))) {
/* Great - it all worked! */
cli_shutdown(cli);
return NT_STATUS_OK;
diff --git a/source3/rpc_client/cli_netlogon.c b/source3/rpc_client/cli_netlogon.c
index 851a4a8da8..478a855882 100644
--- a/source3/rpc_client/cli_netlogon.c
+++ b/source3/rpc_client/cli_netlogon.c
@@ -159,7 +159,7 @@ NTSTATUS rpccli_netlogon_setup_creds(struct rpc_pipe_client *cli,
generate_random_buffer(clnt_chal_send.data, 8);
/* Get the server challenge. */
- result = rpccli_netr_ServerReqChallenge(cli, cli->mem_ctx,
+ result = rpccli_netr_ServerReqChallenge(cli, talloc_tos(),
dc->remote_machine,
clnt_name,
&clnt_chal_send,
@@ -180,7 +180,7 @@ NTSTATUS rpccli_netlogon_setup_creds(struct rpc_pipe_client *cli,
* Send client auth-2 challenge and receive server repy.
*/
- result = rpccli_netr_ServerAuthenticate2(cli, cli->mem_ctx,
+ result = rpccli_netr_ServerAuthenticate2(cli, talloc_tos(),
dc->remote_machine,
dc->mach_acct,
sec_chan_type,
diff --git a/source3/rpc_client/cli_pipe.c b/source3/rpc_client/cli_pipe.c
index bc49e24df1..a94da8b79b 100644
--- a/source3/rpc_client/cli_pipe.c
+++ b/source3/rpc_client/cli_pipe.c
@@ -1979,7 +1979,7 @@ static NTSTATUS rpc_finish_spnego_ntlmssp_bind(struct rpc_pipe_client *cli,
/* Initialize the returning data struct. */
prs_mem_free(rbuf);
- prs_init_empty(rbuf, cli->mem_ctx, UNMARSHALL);
+ prs_init_empty(rbuf, talloc_tos(), UNMARSHALL);
nt_status = rpc_api_pipe(cli, &rpc_out, rbuf, RPC_ALTCONTRESP);
if (!NT_STATUS_IS_OK(nt_status)) {
@@ -2052,7 +2052,7 @@ static NTSTATUS rpc_pipe_bind(struct rpc_pipe_client *cli,
return NT_STATUS_INVALID_PARAMETER;
}
- prs_init_empty(&rpc_out, cli->mem_ctx, MARSHALL);
+ prs_init_empty(&rpc_out, talloc_tos(), MARSHALL);
rpc_call_id = get_rpc_call_id();
@@ -2068,7 +2068,7 @@ static NTSTATUS rpc_pipe_bind(struct rpc_pipe_client *cli,
}
/* Initialize the incoming data struct. */
- prs_init_empty(&rbuf, cli->mem_ctx, UNMARSHALL);
+ prs_init_empty(&rbuf, talloc_tos(), UNMARSHALL);
/* send data on \PIPE\. receive a response */
status = rpc_api_pipe(cli, &rpc_out, &rbuf, RPC_BINDACK);
@@ -2188,7 +2188,6 @@ static NTSTATUS rpc_pipe_bind(struct rpc_pipe_client *cli,
static struct rpc_pipe_client *cli_rpc_pipe_open(struct cli_state *cli, int pipe_idx, NTSTATUS *perr)
{
- TALLOC_CTX *mem_ctx;
struct rpc_pipe_client *result;
int fnum;
@@ -2204,18 +2203,11 @@ static struct rpc_pipe_client *cli_rpc_pipe_open(struct cli_state *cli, int pipe
/* The pipe name index must fall within our array */
SMB_ASSERT((pipe_idx >= 0) && (pipe_idx < PI_MAX_PIPES));
- mem_ctx = talloc_init("struct rpc_pipe_client");
- if (mem_ctx == NULL) {
- return NULL;
- }
-
- result = TALLOC_ZERO_P(mem_ctx, struct rpc_pipe_client);
+ result = TALLOC_ZERO_P(NULL, struct rpc_pipe_client);
if (result == NULL) {
return NULL;
}
- result->mem_ctx = mem_ctx;
-
result->pipe_name = cli_get_pipe_name(pipe_idx);
fnum = cli_nt_create(cli, result->pipe_name, DESIRED_ACCESS_PIPE);
@@ -2226,7 +2218,7 @@ static struct rpc_pipe_client *cli_rpc_pipe_open(struct cli_state *cli, int pipe
result->pipe_name, cli->desthost,
cli_errstr(cli)));
*perr = cli_get_nt_error(cli);
- talloc_destroy(result->mem_ctx);
+ talloc_destroy(result);
return NULL;
}
@@ -2238,9 +2230,9 @@ static struct rpc_pipe_client *cli_rpc_pipe_open(struct cli_state *cli, int pipe
if (pipe_idx == PI_NETLOGON) {
/* Set up a netlogon credential chain for a netlogon pipe. */
- result->dc = TALLOC_ZERO_P(mem_ctx, struct dcinfo);
+ result->dc = TALLOC_ZERO_P(result, struct dcinfo);
if (result->dc == NULL) {
- talloc_destroy(result->mem_ctx);
+ talloc_destroy(result);
return NULL;
}
}
@@ -2525,7 +2517,8 @@ struct rpc_pipe_client *cli_rpc_pipe_open_schannel_with_key(struct cli_state *cl
return NULL;
}
- result->auth.a_u.schannel_auth = TALLOC_ZERO_P(result->mem_ctx, struct schannel_auth_struct);
+ result->auth.a_u.schannel_auth = TALLOC_ZERO_P(
+ result, struct schannel_auth_struct);
if (!result->auth.a_u.schannel_auth) {
cli_rpc_pipe_close(result);
*perr = NT_STATUS_NO_MEMORY;
@@ -2693,8 +2686,8 @@ struct rpc_pipe_client *cli_rpc_pipe_open_krb5(struct cli_state *cli,
/* Default service principal is "desthost$@realm" */
if (!service_princ) {
- service_princ = talloc_asprintf(result->mem_ctx, "%s$@%s",
- cli->desthost, lp_realm() );
+ service_princ = talloc_asprintf(result, "%s$@%s",
+ cli->desthost, lp_realm() );
if (!service_princ) {
cli_rpc_pipe_close(result);
return NULL;
@@ -2710,7 +2703,8 @@ struct rpc_pipe_client *cli_rpc_pipe_open_krb5(struct cli_state *cli,
}
}
- result->auth.a_u.kerberos_auth = TALLOC_ZERO_P(result->mem_ctx, struct kerberos_auth_struct);
+ result->auth.a_u.kerberos_auth = TALLOC_ZERO_P(
+ result, struct kerberos_auth_struct);
if (!result->auth.a_u.kerberos_auth) {
cli_rpc_pipe_close(result);
*perr = NT_STATUS_NO_MEMORY;
diff --git a/source3/smbd/change_trust_pw.c b/source3/smbd/change_trust_pw.c
index 4773eeff86..227b2d6899 100644
--- a/source3/smbd/change_trust_pw.c
+++ b/source3/smbd/change_trust_pw.c
@@ -82,7 +82,8 @@ NTSTATUS change_trust_account_password( const char *domain, const char *remote_m
goto failed;
}
- nt_status = trust_pw_find_change_and_store_it(netlogon_pipe, netlogon_pipe->mem_ctx, domain);
+ nt_status = trust_pw_find_change_and_store_it(
+ netlogon_pipe, netlogon_pipe, domain);
cli_shutdown(cli);
cli = NULL;