s3-lsa: implement _lsa_QueryTrustedDomainInfoBySid().
authorGünther Deschner <gd@samba.org>
Tue, 20 Oct 2009 10:48:30 +0000 (12:48 +0200)
committerGünther Deschner <gd@samba.org>
Wed, 16 Feb 2011 10:44:03 +0000 (11:44 +0100)
Guenther

Signed-off-by: Günther Deschner <gd@samba.org>
source3/rpc_server/lsa/srv_lsa_nt.c

index ca54d51410ecc1aac36a0c2aab75805b8e10d8f2..5cb383c1d085b488747d4d50ecbd6fe498893d3d 100644 (file)
@@ -1800,6 +1800,44 @@ NTSTATUS _lsa_QueryTrustedDomainInfo(struct pipes_struct *p,
        return NT_STATUS_OK;
 }
 
+/***************************************************************************
+ _lsa_QueryTrustedDomainInfoBySid
+ ***************************************************************************/
+
+NTSTATUS _lsa_QueryTrustedDomainInfoBySid(struct pipes_struct *p,
+                                         struct lsa_QueryTrustedDomainInfoBySid *r)
+{
+       NTSTATUS status;
+       struct policy_handle trustdom_handle;
+       struct lsa_OpenTrustedDomain o;
+       struct lsa_QueryTrustedDomainInfo q;
+       struct lsa_Close c;
+
+       o.in.handle             = r->in.handle;
+       o.in.sid                = r->in.dom_sid;
+       o.in.access_mask        = SEC_FLAG_MAXIMUM_ALLOWED;
+       o.out.trustdom_handle   = &trustdom_handle;
+
+       status = _lsa_OpenTrustedDomain(p, &o);
+       if (!NT_STATUS_IS_OK(status)) {
+               return status;
+       }
+
+       q.in.trustdom_handle    = &trustdom_handle;
+       q.in.level              = r->in.level;
+       q.out.info              = r->out.info;
+
+       status = _lsa_QueryTrustedDomainInfo(p, &q);
+       if (!NT_STATUS_IS_OK(status)) {
+               return status;
+       }
+
+       c.in.handle             = &trustdom_handle;
+       c.out.handle            = &trustdom_handle;
+
+       return _lsa_Close(p, &c);
+}
+
 /***************************************************************************
  ***************************************************************************/
 
@@ -2910,13 +2948,6 @@ NTSTATUS _lsa_QuerySecret(struct pipes_struct *p, struct lsa_QuerySecret *r)
        return NT_STATUS_NOT_IMPLEMENTED;
 }
 
-NTSTATUS _lsa_QueryTrustedDomainInfoBySid(struct pipes_struct *p,
-                                         struct lsa_QueryTrustedDomainInfoBySid *r)
-{
-       p->rng_fault_state = True;
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
 NTSTATUS _lsa_SetTrustedDomainInfo(struct pipes_struct *p,
                                   struct lsa_SetTrustedDomainInfo *r)
 {