From d0d5d59943ac7958e95279cd8f8be3097e5e7db8 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Thu, 20 Jan 2011 15:37:46 +0100 Subject: [PATCH] s3-smbd: Disable the endpoint mapper by default. --- selftest/target/Samba3.pm | 2 ++ source3/rpc_server/srv_rpc_register.c | 30 +++++++++++++++++++++++++-- source3/script/tests/selftest.sh | 2 ++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm index 3104e49d5f09..a0a13f9c7268 100644 --- a/selftest/target/Samba3.pm +++ b/selftest/target/Samba3.pm @@ -556,6 +556,8 @@ sub provision($$$$$$) queue resume command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb queueresume %p lpq cache time = 0 + rpc_server:epmapper = embedded + # Begin extra options $extra_options # End extra options diff --git a/source3/rpc_server/srv_rpc_register.c b/source3/rpc_server/srv_rpc_register.c index b3e563dd3ba5..73e2dc766d08 100644 --- a/source3/rpc_server/srv_rpc_register.c +++ b/source3/rpc_server/srv_rpc_register.c @@ -48,6 +48,15 @@ static NTSTATUS _rpc_ep_register(const struct ndr_interface_table *iface, { struct dcerpc_binding_vector *v = NULL; NTSTATUS status; + const char *rpcsrv_type; + + /* start endpoint mapper only if enabled */ + rpcsrv_type = lp_parm_const_string(GLOBAL_SECTION_SNUM, + "rpc_server", "epmapper", + "none"); + if (StrCaseCmp(rpcsrv_type, "none") == 0) { + return NT_STATUS_OK; + } status = dcerpc_binding_vector_create(talloc_tos(), iface, @@ -71,6 +80,15 @@ static NTSTATUS _rpc_ep_unregister(const struct ndr_interface_table *iface) { struct dcerpc_binding_vector *v = NULL; NTSTATUS status; + const char *rpcsrv_type; + + /* start endpoint mapper only if enabled */ + rpcsrv_type = lp_parm_const_string(GLOBAL_SECTION_SNUM, + "rpc_server", "epmapper", + "none"); + if (StrCaseCmp(rpcsrv_type, "none") == 0) { + return NT_STATUS_OK; + } status = dcerpc_binding_vector_create(talloc_tos(), iface, @@ -265,8 +283,16 @@ bool srv_rpc_register(struct messaging_context *msg_ctx) { struct rpc_srv_callbacks dssetup_cb; struct rpc_srv_callbacks wkssvc_cb; - if (!NT_STATUS_IS_OK(rpc_epmapper_init(NULL))) { - return false; + const char *rpcsrv_type; + + /* start endpoint mapper only if enabled */ + rpcsrv_type = lp_parm_const_string(GLOBAL_SECTION_SNUM, + "rpc_server", "epmapper", + "none"); + if (StrCaseCmp(rpcsrv_type, "embedded") == 0) { + if (!NT_STATUS_IS_OK(rpc_epmapper_init(NULL))) { + return false; + } } winreg_cb.init = winreg_init_cb; diff --git a/source3/script/tests/selftest.sh b/source3/script/tests/selftest.sh index 17bb5fe41a4f..3da4fac8ff37 100755 --- a/source3/script/tests/selftest.sh +++ b/source3/script/tests/selftest.sh @@ -343,6 +343,8 @@ cat >$SERVERCONFFILE<