r595: nicer handling on max_size multiplier
authorAndrew Tridgell <tridge@samba.org>
Sun, 9 May 2004 00:42:09 +0000 (00:42 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:51:49 +0000 (12:51 -0500)
(This used to be commit 994baba7ebc267cb3051109aee022d71472aa6b6)

source4/rpc_server/samr/dcesrv_samr.c

index 20460ba172f7fa8abe1dfda0b472c4ef974f8479..9de81c33e593d2cbefd009f23146a677ae155e88 100644 (file)
@@ -647,7 +647,7 @@ static NTSTATUS samr_EnumDomainUsers(struct dcesrv_call_state *dce_call, TALLOC_
        if (count == -1) {
                return NT_STATUS_INTERNAL_DB_CORRUPTION;
        }
-       if (count == 0) {
+       if (count == 0 || r->in.max_size == 0) {
                return NT_STATUS_OK;
        }
 
@@ -677,7 +677,8 @@ static NTSTATUS samr_EnumDomainUsers(struct dcesrv_call_state *dce_call, TALLOC_
        /* 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, 1+(r->in.max_size/54));
+       r->out.num_entries = MIN(r->out.num_entries, 
+                                1+(r->in.max_size/SAMR_ENUM_USERS_MULTIPLIER));
 
        r->out.sam = talloc_p(mem_ctx, struct samr_SamArray);
        if (!r->out.sam) {