1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-02 09:47:23 +03:00

s3:libsmb: Pass memory context to cli_full_connection_creds()

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
This commit is contained in:
Andreas Schneider 2023-11-23 15:07:53 +01:00 committed by Volker Lendecke
parent 5c63d5bdab
commit d2297b41a2
18 changed files with 154 additions and 82 deletions

View File

@ -34,11 +34,16 @@ static struct cli_state *connect_one(struct cli_credentials *creds,
NTSTATUS nt_status;
uint32_t flags = 0;
nt_status = cli_full_connection_creds(&c, lp_netbios_name(), server,
NULL, port,
share, "?????",
creds,
flags);
nt_status = cli_full_connection_creds(talloc_tos(),
&c,
lp_netbios_name(),
server,
NULL,
port,
share,
"?????",
creds,
flags);
if (!NT_STATUS_IS_OK(nt_status)) {
DBG_ERR("cli_full_connection failed! (%s)\n",
nt_errstr(nt_status));

View File

@ -295,6 +295,7 @@ static NTSTATUS winexe_svc_upload(
const DATA_BLOB *binary = NULL;
status = cli_full_connection_creds(
talloc_tos(),
&cli,
NULL,
hostname,
@ -1857,6 +1858,7 @@ int main(int argc, char *argv[])
}
status = cli_full_connection_creds(
talloc_tos(),
&cli,
lp_netbios_name(),
options.hostname,

View File

@ -1143,7 +1143,8 @@ static NTSTATUS libnet_join_connect_dc_ipc(const char *dc,
return NT_STATUS_NO_MEMORY;
}
status = cli_full_connection_creds(cli,
status = cli_full_connection_creds(NULL,
cli,
NULL,
dc,
NULL, 0,
@ -1773,7 +1774,9 @@ NTSTATUS libnet_join_ok(struct messaging_context *msg_ctx,
CRED_SPECIFIED);
}
status = cli_full_connection_creds(&cli, NULL,
status = cli_full_connection_creds(frame,
&cli,
NULL,
dc_name,
NULL, 0,
"IPC$", "IPC",
@ -1789,7 +1792,8 @@ NTSTATUS libnet_join_ok(struct messaging_context *msg_ctx,
return NT_STATUS_NO_MEMORY;
}
status = cli_full_connection_creds(&cli,
status = cli_full_connection_creds(frame,
&cli,
NULL,
dc_name,
NULL, 0,

View File

@ -3806,7 +3806,8 @@ NTSTATUS cli_full_connection_creds_recv(struct tevent_req *req,
return NT_STATUS_OK;
}
NTSTATUS cli_full_connection_creds(struct cli_state **output_cli,
NTSTATUS cli_full_connection_creds(TALLOC_CTX *mem_ctx,
struct cli_state **output_cli,
const char *my_name,
const char *dest_host,
const struct sockaddr_storage *dest_ss, int port,
@ -3818,7 +3819,7 @@ NTSTATUS cli_full_connection_creds(struct cli_state **output_cli,
struct tevent_req *req;
NTSTATUS status = NT_STATUS_NO_MEMORY;
ev = samba_tevent_context_init(talloc_tos());
ev = samba_tevent_context_init(mem_ctx);
if (ev == NULL) {
goto fail;
}
@ -3832,7 +3833,7 @@ NTSTATUS cli_full_connection_creds(struct cli_state **output_cli,
if (!tevent_req_poll_ntstatus(req, ev, &status)) {
goto fail;
}
status = cli_full_connection_creds_recv(req, NULL, output_cli);
status = cli_full_connection_creds_recv(req, mem_ctx, output_cli);
fail:
TALLOC_FREE(ev);
return status;
@ -3968,9 +3969,16 @@ struct cli_state *get_ipc_connect(char *server,
flags |= CLI_FULL_CONNECTION_FORCE_SMB1;
flags |= CLI_FULL_CONNECTION_IPC;
nt_status = cli_full_connection_creds(&cli, NULL, server, server_ss, 0, "IPC$", "IPC",
nt_status = cli_full_connection_creds(NULL,
&cli,
NULL,
server,
server_ss,
0,
"IPC$",
"IPC",
creds,
flags);
flags);
if (NT_STATUS_IS_OK(nt_status)) {
return cli;

View File

@ -844,12 +844,17 @@ SMBC_attr_server(TALLOC_CTX *ctx,
return NULL;
}
nt_status = cli_full_connection_creds(&ipc_cli,
lp_netbios_name(), server,
NULL, 0, "IPC$", "?????",
creds,
flags);
if (! NT_STATUS_IS_OK(nt_status)) {
nt_status = cli_full_connection_creds(NULL,
&ipc_cli,
lp_netbios_name(),
server,
NULL,
0,
"IPC$",
"?????",
creds,
flags);
if (! NT_STATUS_IS_OK(nt_status)) {
TALLOC_FREE(creds);
DEBUG(1,("cli_full_connection failed! (%s)\n",
nt_errstr(nt_status)));

View File

@ -112,7 +112,8 @@ struct tevent_req *cli_full_connection_creds_send(
NTSTATUS cli_full_connection_creds_recv(struct tevent_req *req,
TALLOC_CTX *mem_ctx,
struct cli_state **output_cli);
NTSTATUS cli_full_connection_creds(struct cli_state **output_cli,
NTSTATUS cli_full_connection_creds(TALLOC_CTX *mem_ctx,
struct cli_state **output_cli,
const char *my_name,
const char *dest_host,
const struct sockaddr_storage *dest_ss, int port,

View File

@ -2491,10 +2491,16 @@ static bool spoolss_connect_to_client(struct rpc_pipe_client **pp_pipe, struct c
}
/* setup the connection */
ret = cli_full_connection_creds( pp_cli, lp_netbios_name(), remote_machine,
&rm_addr, 0, "IPC$", "IPC",
anon_creds,
CLI_FULL_CONNECTION_IPC);
ret = cli_full_connection_creds(NULL,
pp_cli,
lp_netbios_name(),
remote_machine,
&rm_addr,
0,
"IPC$",
"IPC",
anon_creds,
CLI_FULL_CONNECTION_IPC);
TALLOC_FREE(anon_creds);
if ( !NT_STATUS_IS_OK( ret ) ) {
DEBUG(2,("spoolss_connect_to_client: connection to [%s] failed!\n",

View File

@ -3516,11 +3516,16 @@ static WERROR cmd_spoolss_printercmp(struct rpc_pipe_client *cli,
/* first get the connection to the remote server */
nt_status = cli_full_connection_creds(&cli_server2, lp_netbios_name(), argv[2],
NULL, 0,
"IPC$", "IPC",
creds,
CLI_FULL_CONNECTION_IPC);
nt_status = cli_full_connection_creds(mem_ctx,
&cli_server2,
lp_netbios_name(),
argv[2],
NULL,
0,
"IPC$",
"IPC",
creds,
CLI_FULL_CONNECTION_IPC);
if ( !NT_STATUS_IS_OK(nt_status) )
return WERR_GEN_FAILURE;

View File

@ -1305,16 +1305,17 @@ out_free:
}
if (transport == NCACN_NP) {
nt_status = cli_full_connection_creds(
&cli,
lp_netbios_name(),
host,
opt_ipaddr ? &server_ss : NULL,
opt_port,
"IPC$",
"IPC",
creds,
flags);
nt_status = cli_full_connection_creds(frame,
&cli,
lp_netbios_name(),
host,
opt_ipaddr ? &server_ss
: NULL,
opt_port,
"IPC$",
"IPC",
creds,
flags);
if (!NT_STATUS_IS_OK(nt_status)) {
DEBUG(0, ("Cannot connect to server. Error was %s\n",

View File

@ -219,7 +219,8 @@ static struct cli_state *connect_one(char *share)
slprintf(myname,sizeof(myname), "lock-%lu-%u", (unsigned long)getpid(), count++);
nt_status = cli_full_connection_creds(&c,
nt_status = cli_full_connection_creds(NULL,
&c,
myname,
server_n,
NULL,

View File

@ -349,7 +349,8 @@ static bool torture_open_connection_share(struct cli_state **c,
{
NTSTATUS status;
status = cli_full_connection_creds(c,
status = cli_full_connection_creds(NULL,
c,
myname,
hostname,
NULL, /* dest_ss */
@ -1708,7 +1709,8 @@ static bool run_tcon_devtype_test(int dummy)
NTSTATUS status;
bool ret = True;
status = cli_full_connection_creds(&cli1,
status = cli_full_connection_creds(NULL,
&cli1,
myname,
host,
NULL, /* dest_ss */

View File

@ -135,7 +135,8 @@ int main(int argc, char **argv)
creds = samba_cmdline_get_creds();
status = cli_full_connection_creds(&cli,
status = cli_full_connection_creds(frame,
&cli,
lp_netbios_name(),
server,
NULL,

View File

@ -2393,11 +2393,16 @@ static int net_ads_printer_publish(struct net_context *c,
CRED_USE_KERBEROS_REQUIRED,
CRED_SPECIFIED);
nt_status = cli_full_connection_creds(&cli, lp_netbios_name(), servername,
&server_ss, 0,
"IPC$", "IPC",
c->creds,
CLI_FULL_CONNECTION_IPC);
nt_status = cli_full_connection_creds(c,
&cli,
lp_netbios_name(),
servername,
&server_ss,
0,
"IPC$",
"IPC",
c->creds,
CLI_FULL_CONNECTION_IPC);
if (NT_STATUS_IS_ERR(nt_status)) {
d_fprintf(stderr, _("Unable to open a connection to %s to "

View File

@ -116,11 +116,16 @@ NTSTATUS connect_to_service(struct net_context *c,
flags |= CLI_FULL_CONNECTION_IPC;
}
nt_status = cli_full_connection_creds(cli_ctx, NULL, server_name,
server_ss, c->opt_port,
service_name, service_type,
c->creds,
flags);
nt_status = cli_full_connection_creds(c,
cli_ctx,
NULL,
server_name,
server_ss,
c->opt_port,
service_name,
service_type,
c->creds,
flags);
if (!NT_STATUS_IS_OK(nt_status)) {
d_fprintf(stderr, _("Could not connect to server %s\n"),
server_name);
@ -177,11 +182,16 @@ NTSTATUS connect_to_ipc_anonymous(struct net_context *c,
return NT_STATUS_NO_MEMORY;
}
nt_status = cli_full_connection_creds(cli_ctx, c->opt_requester_name,
server_name, server_ss, c->opt_port,
"IPC$", "IPC",
anon_creds,
CLI_FULL_CONNECTION_IPC);
nt_status = cli_full_connection_creds(c,
cli_ctx,
c->opt_requester_name,
server_name,
server_ss,
c->opt_port,
"IPC$",
"IPC",
anon_creds,
CLI_FULL_CONNECTION_IPC);
if (NT_STATUS_IS_OK(nt_status)) {
return nt_status;

View File

@ -95,11 +95,16 @@ static struct con_struct *create_cs(struct net_context *c,
ZERO_STRUCTP(cs);
talloc_set_destructor(cs, cs_destructor);
nt_status = cli_full_connection_creds(&cs->cli, lp_netbios_name(), lp_netbios_name(),
&loopback_ss, 0,
"IPC$", "IPC",
anon_creds,
CLI_FULL_CONNECTION_IPC);
nt_status = cli_full_connection_creds(c,
&cs->cli,
lp_netbios_name(),
lp_netbios_name(),
&loopback_ss,
0,
"IPC$",
"IPC",
anon_creds,
CLI_FULL_CONNECTION_IPC);
if (!NT_STATUS_IS_OK(nt_status)) {
DEBUG(2,("create_cs: Connect failed. Error was %s\n", nt_errstr(nt_status)));

View File

@ -846,11 +846,16 @@ static struct cli_state *connect_one(struct cli_credentials *creds,
NTSTATUS nt_status;
uint32_t flags = 0;
nt_status = cli_full_connection_creds(&c, lp_netbios_name(), server,
NULL, 0,
share, "?????",
creds,
flags);
nt_status = cli_full_connection_creds(talloc_tos(),
&c,
lp_netbios_name(),
server,
NULL,
0,
share,
"?????",
creds,
flags);
if (!NT_STATUS_IS_OK(nt_status)) {
DEBUG(0,("cli_full_connection failed! (%s)\n", nt_errstr(nt_status)));
return NULL;

View File

@ -523,11 +523,16 @@ static struct cli_state *connect_one(const char *share)
NTSTATUS nt_status;
uint32_t flags = 0;
nt_status = cli_full_connection_creds(&c, lp_netbios_name(), server,
NULL, 0,
share, "?????",
samba_cmdline_get_creds(),
flags);
nt_status = cli_full_connection_creds(talloc_tos(),
&c,
lp_netbios_name(),
server,
NULL,
0,
share,
"?????",
samba_cmdline_get_creds(),
flags);
if (!NT_STATUS_IS_OK(nt_status)) {
DEBUG(0,("cli_full_connection failed! (%s)\n", nt_errstr(nt_status)));
return NULL;

View File

@ -720,15 +720,16 @@ int main(int argc, char **argv)
talloc_strdup(select_stmt->cols, default_column);
}
status = cli_full_connection_creds(&c,
lp_netbios_name(),
server,
NULL,
0,
"IPC$",
"IPC",
samba_cmdline_get_creds(),
flags);
status = cli_full_connection_creds(talloc_tos(),
&c,
lp_netbios_name(),
server,
NULL,
0,
"IPC$",
"IPC",
samba_cmdline_get_creds(),
flags);
if (!NT_STATUS_IS_OK(status)) {
DBG_ERR("failed to connect to IPC$: %s\n",