s4:dcesrv_samr_EnumDomainGroups - mostly small fixes
authorMatthias Dieter Wallnöfer <mdw@samba.org>
Fri, 11 Jun 2010 21:44:46 +0000 (23:44 +0200)
committerMatthias Dieter Wallnöfer <mdw@samba.org>
Sat, 12 Jun 2010 14:45:47 +0000 (16:45 +0200)
source4/rpc_server/samr/dcesrv_samr.c

index 2b7a8d17d61a305bbfac85ccf79bb6b7ec5370fd..12249eb066cf79bc0cc47a56f7193ca4f49b49c0 100644 (file)
@@ -1074,7 +1074,7 @@ static NTSTATUS dcesrv_samr_EnumDomainGroups(struct dcesrv_call_state *dce_call,
        int i, ldb_cnt;
        uint32_t first, count;
        struct samr_SamEntry *entries;
-       const char * const attrs[3] = { "objectSid", "sAMAccountName", NULL };
+       const char * const attrs[] = { "objectSid", "sAMAccountName", NULL };
        struct samr_SamArray *sam;
 
        *r->out.resume_handle = 0;
@@ -1093,7 +1093,7 @@ static NTSTATUS dcesrv_samr_EnumDomainGroups(struct dcesrv_call_state *dce_call,
                                      "(&(|(groupType=%d)(groupType=%d))(objectClass=group))",
                                      GTYPE_SECURITY_UNIVERSAL_GROUP,
                                      GTYPE_SECURITY_GLOBAL_GROUP);
-       if (ldb_cnt == -1) {
+       if (ldb_cnt < 0) {
                return NT_STATUS_INTERNAL_DB_CORRUPTION;
        }
 
@@ -1128,7 +1128,7 @@ static NTSTATUS dcesrv_samr_EnumDomainGroups(struct dcesrv_call_state *dce_call,
             first<count && entries[first].idx <= *r->in.resume_handle;
             first++) ;
 
-       /* return the rest, limit by max_size. Note that we 
+       /* return the rest, limit by max_size. Note that we
           use the w2k3 element size value of 54 */
        *r->out.num_entries = count - first;
        *r->out.num_entries = MIN(*r->out.num_entries,
@@ -1144,6 +1144,10 @@ static NTSTATUS dcesrv_samr_EnumDomainGroups(struct dcesrv_call_state *dce_call,
 
        *r->out.sam = sam;
 
+       if (first == count) {
+               return NT_STATUS_OK;
+       }
+
        if (*r->out.num_entries < count - first) {
                *r->out.resume_handle = entries[first+*r->out.num_entries-1].idx;
                return STATUS_MORE_ENTRIES;