summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2011-02-17 14:37:32 +0100
committerGünther Deschner <gd@samba.org>2011-02-17 16:02:20 +0100
commit67dfc87291a342dc17dbb7bcee06157dd614f3e3 (patch)
tree6a0c2dbc945b46cad99894e7a7f47037413a4d09
parent0ed46df56a84dfc40e172ea1e460fa6490b15a2a (diff)
downloadsamba-67dfc87291a342dc17dbb7bcee06157dd614f3e3.tar.gz
samba-67dfc87291a342dc17dbb7bcee06157dd614f3e3.tar.bz2
samba-67dfc87291a342dc17dbb7bcee06157dd614f3e3.zip
s3-lsa: only proceed in _lsa_EnumTrustedDomainsEx when backend has trusted domain support.
Guenther
-rw-r--r--source3/passdb/pdb_ipa.c2
-rw-r--r--source3/rpc_server/lsa/srv_lsa_nt.c9
2 files changed, 10 insertions, 1 deletions
diff --git a/source3/passdb/pdb_ipa.c b/source3/passdb/pdb_ipa.c
index 3108c5e1f0..9e52e952a1 100644
--- a/source3/passdb/pdb_ipa.c
+++ b/source3/passdb/pdb_ipa.c
@@ -705,7 +705,7 @@ static NTSTATUS ipasam_enum_trusteddoms(struct pdb_methods *methods,
static uint32_t pdb_ipasam_capabilities(struct pdb_methods *methods)
{
- return PDB_CAP_STORE_RIDS | PDB_CAP_ADS;
+ return PDB_CAP_STORE_RIDS | PDB_CAP_ADS | PDB_CAP_TRUSTED_DOMAINS_EX;
}
static struct pdb_domain_info *pdb_ipasam_get_domain_info(struct pdb_methods *pdb_methods,
diff --git a/source3/rpc_server/lsa/srv_lsa_nt.c b/source3/rpc_server/lsa/srv_lsa_nt.c
index 9f05433631..4b4a27c2a8 100644
--- a/source3/rpc_server/lsa/srv_lsa_nt.c
+++ b/source3/rpc_server/lsa/srv_lsa_nt.c
@@ -3297,6 +3297,15 @@ NTSTATUS _lsa_EnumTrustedDomainsEx(struct pipes_struct *p,
int i;
NTSTATUS nt_status;
+ /* bail out early if pdb backend is not capable of ex trusted domains,
+ * if we dont do that, the client might not call
+ * _lsa_EnumTrustedDomains() afterwards - gd */
+
+ if (!(pdb_capabilities() & PDB_CAP_TRUSTED_DOMAINS_EX)) {
+ p->rng_fault_state = True;
+ return NT_STATUS_NOT_IMPLEMENTED;
+ }
+
if (!find_policy_by_hnd(p, r->in.handle, (void **)(void *)&info))
return NT_STATUS_INVALID_HANDLE;