summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2001-12-31 22:37:51 +0000
committerJeremy Allison <jra@samba.org>2001-12-31 22:37:51 +0000
commit120607cab1ccd5e10a26a7ef367c53e766ba4293 (patch)
treea63b42d8c82bf9be97931591be55ae6f02f9ec13
parent927e86047786cbdda2bded6d983d952202b08006 (diff)
downloadsamba-120607cab1ccd5e10a26a7ef367c53e766ba4293.tar.gz
samba-120607cab1ccd5e10a26a7ef367c53e766ba4293.tar.bz2
samba-120607cab1ccd5e10a26a7ef367c53e766ba4293.zip
Fixed enumeration of a large (<1500) users from a Samba PDC to a W2k
member server. Firstly, use the same max enumeration size (0x400) as W2K uses, otherwise W2K won't ask for any more. Secondly, if a enumeration request with a non-zero offset comes in on a handle that hasn't started an enumeration, don't bitch about it (return NT_STATUS_UNSUCCESSFUL), just load the db on that handle and return at that offset. Jeremy. (This used to be commit 0b7da4a50ea02e28ab23e71de1e5f8b9194a9af3)
-rw-r--r--source3/include/rpc_samr.h2
-rw-r--r--source3/rpc_server/srv_samr_nt.c6
2 files changed, 1 insertions, 7 deletions
diff --git a/source3/include/rpc_samr.h b/source3/include/rpc_samr.h
index c0b908b348..36c9f69821 100644
--- a/source3/include/rpc_samr.h
+++ b/source3/include/rpc_samr.h
@@ -646,7 +646,7 @@ typedef struct r_samr_open_domain_info
} SAMR_R_OPEN_DOMAIN;
-#define MAX_SAM_ENTRIES 50
+#define MAX_SAM_ENTRIES 0x400
typedef struct samr_entry_info
{
diff --git a/source3/rpc_server/srv_samr_nt.c b/source3/rpc_server/srv_samr_nt.c
index 6e25da1710..2c599c9d79 100644
--- a/source3/rpc_server/srv_samr_nt.c
+++ b/source3/rpc_server/srv_samr_nt.c
@@ -901,9 +901,6 @@ NTSTATUS _samr_query_dispinfo(pipes_struct *p, SAMR_Q_QUERY_DISPINFO *q_u, SAMR_
case 0x1:
case 0x2:
case 0x4:
- if (enum_context!=0 && info->disp_info.user_dbloaded==False)
- return NT_STATUS_UNSUCCESSFUL;
-
become_root();
r_u->status=load_sampwd_entries(info, acb_mask);
unbecome_root();
@@ -914,9 +911,6 @@ NTSTATUS _samr_query_dispinfo(pipes_struct *p, SAMR_Q_QUERY_DISPINFO *q_u, SAMR_
break;
case 0x3:
case 0x5:
- if (enum_context!=0 && info->disp_info.group_dbloaded==False)
- return NT_STATUS_UNSUCCESSFUL;
-
r_u->status = load_group_domain_entries(info, &info->sid);
if (NT_STATUS_IS_ERR(r_u->status))
return r_u->status;