s4-lsa Use the supplied handle in LsaLookupNames2
authorAndrew Bartlett <abartlet@samba.org>
Wed, 27 Jul 2011 21:55:09 +0000 (07:55 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Fri, 29 Jul 2011 02:24:06 +0000 (04:24 +0200)
In my rework of this function in 2006 with
459a2301a5d63f5a1a6b27996c8a0358b20f2ab2 I ignored the incoming
handle, instead feching the LSA state again (dispite the commit
message indicating otherwise).

This means that data->access_mask is uninitialised, which doesn't
matter right now, but will once we start checking that.

Andrew Bartlett

source4/rpc_server/lsa/lsa_lookup.c

index 3d472812d8cef2c646d0184fdc7123f20dbd92fc..522d2db6d6e3d0b541705cdeb367696d2ceac806 100644 (file)
@@ -549,12 +549,17 @@ NTSTATUS dcesrv_lsa_LookupSids2(struct dcesrv_call_state *dce_call,
        struct lsa_RefDomainList *domains = NULL;
        uint32_t i;
        NTSTATUS status = NT_STATUS_OK;
+       struct dcesrv_handle *h;
+
+       DCESRV_PULL_HANDLE(h, r->in.handle, LSA_HANDLE_POLICY);
 
        if (r->in.level < LSA_LOOKUP_NAMES_ALL ||
            r->in.level > LSA_LOOKUP_NAMES_RODC_REFERRAL_TO_FULL_DC) {
                return NT_STATUS_INVALID_PARAMETER;
        }
 
+       state = h->data;
+
        *r->out.domains = NULL;
 
        /* NOTE: the WSPP test suite tries SIDs with invalid revision numbers,
@@ -563,11 +568,6 @@ NTSTATUS dcesrv_lsa_LookupSids2(struct dcesrv_call_state *dce_call,
           MS-DTYP 2.4.2
        */
 
-       status = dcesrv_lsa_get_policy_state(dce_call, mem_ctx, &state);
-       if (!NT_STATUS_IS_OK(status)) {
-               return status;
-       }
-
        domains = talloc_zero(r->out.domains,  struct lsa_RefDomainList);
        if (domains == NULL) {
                return NT_STATUS_NO_MEMORY;