From 33f7aac8719a5de9a3dc01cda70b190c1a824a53 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 12 Jan 2021 09:26:24 +0100 Subject: rpc_server: Make dcerpc_ncacn_accept() take tsocket_address ** dcerpc_ncacn_accept() talloc_move's the addresses away from the caller's talloc hierarchy. Don't leave pointers around in the caller. Signed-off-by: Volker Lendecke Reviewed-by: Samuel Cabrero --- source3/printing/spoolssd.c | 4 ++-- source3/rpc_server/lsasd.c | 4 ++-- source3/rpc_server/mdssd.c | 4 ++-- source3/rpc_server/rpc_server.c | 22 +++++++++++++--------- source3/rpc_server/rpc_server.h | 4 ++-- 5 files changed, 21 insertions(+), 17 deletions(-) (limited to 'source3') diff --git a/source3/printing/spoolssd.c b/source3/printing/spoolssd.c index 8aef363fa91..67cd20684fd 100644 --- a/source3/printing/spoolssd.c +++ b/source3/printing/spoolssd.c @@ -430,8 +430,8 @@ static void spoolss_handle_client(struct tevent_req *req) data->msg_ctx, data->dce_ctx, ep, - cli_addr, - srv_addr, + &cli_addr, + &srv_addr, sd, spoolss_client_terminated, data); diff --git a/source3/rpc_server/lsasd.c b/source3/rpc_server/lsasd.c index a5cc1dad17d..93317688ce8 100644 --- a/source3/rpc_server/lsasd.c +++ b/source3/rpc_server/lsasd.c @@ -439,8 +439,8 @@ static void lsasd_handle_client(struct tevent_req *req) data->msg_ctx, data->dce_ctx, ep, - cli_addr, - srv_addr, + &cli_addr, + &srv_addr, sd, term_fn, term_fn_data); diff --git a/source3/rpc_server/mdssd.c b/source3/rpc_server/mdssd.c index 0c44b010aae..aec5c082b0b 100644 --- a/source3/rpc_server/mdssd.c +++ b/source3/rpc_server/mdssd.c @@ -389,8 +389,8 @@ static void mdssd_handle_client(struct tevent_req *req) data->msg_ctx, data->dce_ctx, ep, - cli_addr, - srv_addr, + &cli_addr, + &srv_addr, sd, term_fn, term_fn_data); diff --git a/source3/rpc_server/rpc_server.c b/source3/rpc_server/rpc_server.c index 497a7e43374..e16078832db 100644 --- a/source3/rpc_server/rpc_server.c +++ b/source3/rpc_server/rpc_server.c @@ -435,8 +435,8 @@ static void dcesrv_ncacn_ip_tcp_listener(struct tevent_context *ev, state->msg_ctx, state->dce_ctx, state->endpoint, - cli_addr, - srv_addr, + &cli_addr, + &srv_addr, s, state->termination_fn, state->termination_data); @@ -660,7 +660,9 @@ static void dcesrv_ncalrpc_listener(struct tevent_context *ev, state->msg_ctx, state->dce_ctx, state->endpoint, - cli_addr, srv_addr, sd, + &cli_addr, + &srv_addr, + sd, state->termination_fn, state->termination_data); } @@ -717,8 +719,8 @@ void dcerpc_ncacn_accept(struct tevent_context *ev_ctx, struct messaging_context *msg_ctx, struct dcesrv_context *dce_ctx, struct dcesrv_endpoint *e, - struct tsocket_address *cli_addr, - struct tsocket_address *srv_addr, + struct tsocket_address **cli_addr, + struct tsocket_address **srv_addr, int s, dcerpc_ncacn_termination_fn termination_fn, void *termination_data) @@ -748,8 +750,9 @@ void dcerpc_ncacn_accept(struct tevent_context *ev_ctx, ncacn_conn->sock = s; - if (cli_addr != NULL) { - ncacn_conn->remote_client_addr = talloc_move(ncacn_conn, &cli_addr); + if ((cli_addr != NULL) && (*cli_addr != NULL)) { + ncacn_conn->remote_client_addr = talloc_move( + ncacn_conn, cli_addr); if (tsocket_address_is_inet(ncacn_conn->remote_client_addr, "ip")) { ncacn_conn->remote_client_name = @@ -769,8 +772,9 @@ void dcerpc_ncacn_accept(struct tevent_context *ev_ctx, } } - if (srv_addr != NULL) { - ncacn_conn->local_server_addr = talloc_move(ncacn_conn, &srv_addr); + if ((srv_addr != NULL) && (*srv_addr != NULL)) { + ncacn_conn->local_server_addr = talloc_move( + ncacn_conn, srv_addr); if (tsocket_address_is_inet(ncacn_conn->local_server_addr, "ip")) { ncacn_conn->local_server_name = diff --git a/source3/rpc_server/rpc_server.h b/source3/rpc_server/rpc_server.h index 4a3a5dae4bc..4a716b9bed5 100644 --- a/source3/rpc_server/rpc_server.h +++ b/source3/rpc_server/rpc_server.h @@ -98,8 +98,8 @@ void dcerpc_ncacn_accept(struct tevent_context *ev_ctx, struct messaging_context *msg_ctx, struct dcesrv_context *dce_ctx, struct dcesrv_endpoint *e, - struct tsocket_address *cli_addr, - struct tsocket_address *srv_addr, + struct tsocket_address **cli_addr, + struct tsocket_address **srv_addr, int s, dcerpc_ncacn_termination_fn termination_fn, void *termination_data); -- cgit v1.2.1