From: Samuel Cabrero Date: Mon, 23 Aug 2021 12:23:58 +0000 (+0200) Subject: pidl:NDR/ServerCompat.pm: Do not register disabled services X-Git-Tag: ldb-2.5.0~624 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=99bf0c1b2649f74a3199c59bbc16c6e604ff4e79;p=thirdparty%2Fsamba.git pidl:NDR/ServerCompat.pm: Do not register disabled services In samba3 it is possible to disable RPC services, for exapmle: rpc_server:netlogon = disabled If a service is disabled do not register the interface neither create its endpoint. Signed-off-by: Samuel Cabrero Reviewed-by: Volker Lendecke --- diff --git a/pidl/lib/Parse/Pidl/Samba4/NDR/ServerCompat.pm b/pidl/lib/Parse/Pidl/Samba4/NDR/ServerCompat.pm index d1368c3dbca..064bec8aee4 100644 --- a/pidl/lib/Parse/Pidl/Samba4/NDR/ServerCompat.pm +++ b/pidl/lib/Parse/Pidl/Samba4/NDR/ServerCompat.pm @@ -469,6 +469,14 @@ sub boilerplate_ep_server($) $self->pidl("static NTSTATUS $name\__check_register_in_endpoint(const char *name, struct dcerpc_binding *binding) {"); $self->indent(); $self->pidl("enum dcerpc_transport_t transport = dcerpc_binding_get_transport(binding);"); + $self->pidl(""); + $self->pidl("/* If service is disabled, do not register */"); + $self->pidl("if (rpc_service_mode(name) == RPC_SERVICE_MODE_DISABLED) {"); + $self->indent(); + $self->pidl("return NT_STATUS_NOT_IMPLEMENTED;"); + $self->deindent(); + $self->pidl("}"); + $self->pidl(""); $self->pidl("/* If service is embedded, register only for ncacn_np"); $self->pidl(" * see 8466b3c85e4b835e57e41776853093f4a0edc8b8"); diff --git a/selftest/knownfail b/selftest/knownfail index 73ae7142563..94af250d4eb 100644 --- a/selftest/knownfail +++ b/selftest/knownfail @@ -347,6 +347,24 @@ ^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_assoc_group_fail1\(ad_member\) ^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_assoc_group_fail2\(ad_member\) ^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_assoc_group_fail3\(ad_member\) +# NETLOGON is disabled in any non-DC environments +^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_2nd_cancel_requests\(ad_member\) +^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_first_08_requests\(ad_member\) +^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_first_cancel_requests\(ad_member\) +^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_first_cmpx_requests\(ad_member\) +^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_first_didnot_requests\(ad_member\) +^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_first_maybe_requests\(ad_member\) +^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_first_only_requests\(ad_member\) +^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_fragmented_requests01\(ad_member\) +^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_fragmented_requests02\(ad_member\) +^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_fragmented_requests03\(ad_member\) +^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_fragmented_requests04\(ad_member\) +^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_fragmented_requests05\(ad_member\) +^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_last_cancel_requests\(ad_member\) +^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_last_only_requests\(ad_member\) +^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_mix_requests\(ad_member\) +^samba.tests.dcerpc.raw_protocol.*.TestDCERPC_BIND.test_none_only_requests\(ad_member\) + ^samba4.rpc.echo.*on.*with.object.echo.doublepointer.*nt4_dc ^samba4.rpc.echo.*on.*with.object.echo.surrounding.*nt4_dc ^samba4.rpc.echo.*on.*with.object.echo.enum.*nt4_dc @@ -376,4 +394,3 @@ ^samba.tests.ntlmdisabled.python\(ktest\).ntlmdisabled.NtlmDisabledTests.test_samr_change_password\(ktest\) ^samba.tests.ntlmdisabled.python\(ad_dc_no_ntlm\).ntlmdisabled.NtlmDisabledTests.test_ntlm_connection\(ad_dc_no_ntlm\) -