Fixup correct (as per W2K3) returns for lookupsids as well as lookupnames.
authorJeremy Allison <jra@samba.org>
Thu, 19 Feb 2004 23:00:01 +0000 (23:00 +0000)
committerJeremy Allison <jra@samba.org>
Thu, 19 Feb 2004 23:00:01 +0000 (23:00 +0000)
Inspired by Volkers patch.
Jeremy.
(This used to be commit a47127e90e7d0928b772ba45bd843eeeacc9ef8a)

source3/rpc_server/srv_lsa_nt.c

index 66adc8398af9a6622e4b0ce97a4564544814e8f7..07c024e1ca98f913f50b9a52cc62f9be71879a37 100644 (file)
@@ -174,7 +174,7 @@ static void init_lsa_rid2s(DOM_R_REF *ref, DOM_RID2 *rid2,
                        (*mapped_count)++;
                } else {
                        dom_idx = -1;
-                       rid = 0xffffffff;
+                       rid = 0;
                        name_type = SID_NAME_UNKNOWN;
                }
 
@@ -202,11 +202,6 @@ static void init_reply_lookup_names(LSA_R_LOOKUP_NAMES *r_l,
        r_l->dom_rid      = rid2;
 
        r_l->mapped_count = mapped_count;
-
-       if (mapped_count == 0)
-               r_l->status = NT_STATUS_NONE_MAPPED;
-       else
-               r_l->status = NT_STATUS_OK;
 }
 
 /***************************************************************************
@@ -711,6 +706,12 @@ done:
 
        /* set up the LSA Lookup RIDs response */
        init_lsa_rid2s(ref, rids, num_entries, names, &mapped_count, p->endian);
+       if (mapped_count == 0)
+               r_u->status = NT_STATUS_NONE_MAPPED;
+       else if (mapped_count != num_entries)
+               r_u->status = STATUS_SOME_UNMAPPED;
+       else
+               r_u->status = NT_STATUS_OK;
        init_reply_lookup_names(r_u, ref, num_entries, rids, mapped_count);
 
        return r_u->status;