From df09511cf2d4462384b85ef0d0a82e059a93d4c5 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Mon, 18 Jul 2011 11:42:43 +0200 Subject: s3-rpc_server: Fixed segfaults in rpc daemons. Autobuild-User: Andreas Schneider Autobuild-Date: Mon Jul 18 14:01:02 CEST 2011 on sn-devel-104 --- source3/printing/spoolssd.c | 2 +- source3/rpc_server/epmd.c | 2 +- source3/rpc_server/rpc_server.c | 6 +++++- source3/rpc_server/rpc_server.h | 3 ++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/source3/printing/spoolssd.c b/source3/printing/spoolssd.c index cb90a9f7c7..039eb8872e 100644 --- a/source3/printing/spoolssd.c +++ b/source3/printing/spoolssd.c @@ -222,7 +222,7 @@ void start_spoolssd(struct tevent_context *ev_ctx, exit(1); } - if (!setup_named_pipe_socket(SPOOLSS_PIPE_NAME, ev_ctx)) { + if (!setup_named_pipe_socket(SPOOLSS_PIPE_NAME, ev_ctx, msg_ctx)) { exit(1); } diff --git a/source3/rpc_server/epmd.c b/source3/rpc_server/epmd.c index bb241ff2c1..6f3959b5b8 100644 --- a/source3/rpc_server/epmd.c +++ b/source3/rpc_server/epmd.c @@ -274,7 +274,7 @@ void start_epmd(struct tevent_context *ev_ctx, exit(1); } - ok = setup_named_pipe_socket("epmapper", ev_ctx); + ok = setup_named_pipe_socket("epmapper", ev_ctx, msg_ctx); if (!ok) { DEBUG(0, ("Failed to open epmd named pipe!\n")); exit(1); diff --git a/source3/rpc_server/rpc_server.c b/source3/rpc_server/rpc_server.c index 2dffaff3f0..6eef6f1431 100644 --- a/source3/rpc_server/rpc_server.c +++ b/source3/rpc_server/rpc_server.c @@ -212,7 +212,8 @@ static void named_pipe_listener(struct tevent_context *ev, void *private_data); bool setup_named_pipe_socket(const char *pipe_name, - struct tevent_context *ev_ctx) + struct tevent_context *ev_ctx, + struct messaging_context *msg_ctx) { struct dcerpc_ncacn_listen_state *state; struct tevent_fd *fde; @@ -230,6 +231,9 @@ bool setup_named_pipe_socket(const char *pipe_name, } state->fd = -1; + state->ev_ctx = ev_ctx; + state->msg_ctx = msg_ctx; + /* * As lp_ncalrpc_dir() should have 0755, but * lp_ncalrpc_dir()/np should have 0700, we need to diff --git a/source3/rpc_server/rpc_server.h b/source3/rpc_server/rpc_server.h index aafc96238a..be6a154333 100644 --- a/source3/rpc_server/rpc_server.h +++ b/source3/rpc_server/rpc_server.h @@ -27,7 +27,8 @@ typedef bool (*dcerpc_ncacn_disconnect_fn)(struct pipes_struct *p); void set_incoming_fault(struct pipes_struct *p); void process_complete_pdu(struct pipes_struct *p); bool setup_named_pipe_socket(const char *pipe_name, - struct tevent_context *ev_ctx); + struct tevent_context *ev_ctx, + struct messaging_context *msg_ctx); uint16_t setup_dcerpc_ncacn_tcpip_socket(struct tevent_context *ev_ctx, struct messaging_context *msg_ctx, -- cgit