]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
rpc_server: Make dcerpc_ncacn_accept() take tsocket_address **
authorVolker Lendecke <vl@samba.org>
Tue, 12 Jan 2021 08:26:24 +0000 (09:26 +0100)
committerVolker Lendecke <vl@samba.org>
Thu, 14 Jan 2021 13:29:35 +0000 (13:29 +0000)
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 <vl@samba.org>
Reviewed-by: Samuel Cabrero <scabrero@samba.org>
source3/printing/spoolssd.c
source3/rpc_server/lsasd.c
source3/rpc_server/mdssd.c
source3/rpc_server/rpc_server.c
source3/rpc_server/rpc_server.h

index 8aef363fa91c7e315b989cce03e049691c8da563..67cd20684fdc29b93e1bc643b7eae59d4dfc1703 100644 (file)
@@ -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);
index a5cc1dad17d13ce2341a58bf3f7dd3c7dc98da5e..93317688ce8f765b397ef361b8bbbf957e5b01bb 100644 (file)
@@ -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);
index 0c44b010aaed346080420f229ff0be53a28edab8..aec5c082b0bf8a478b3917cb7f4132ae19c55d97 100644 (file)
@@ -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);
index 497a7e4337409304184eab1010ffb2666d077cb5..e16078832dbdbb803f32779d99d3754bdac69805 100644 (file)
@@ -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 =
index 4a3a5dae4bc1dd88ff7359409f5f16e6f415847e..4a716b9bed5e7dd24c863cf756afd831d64c9ff5 100644 (file)
@@ -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);