summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2010-02-28 14:38:14 +0100
committerKarolin Seeger <kseeger@samba.org>2010-03-01 11:31:23 +0100
commit6f38dc637faeea64ac6e693cfa649899004f01d8 (patch)
tree77f210f6fd4add90d8198dc12006bded72b5b550
parent4aa41c7d4a39f33fb4868b27e057d0a169fb97e6 (diff)
downloadsamba-6f38dc637faeea64ac6e693cfa649899004f01d8.tar.gz
s3: Fix but 7145 -- duplicate sam and unix accounts
For me this survives the TESTS=posix_s3 POSIX_SUBTESTS="RPC-SAMR-LARGE-DC LOCAL-NSS-WRAPPER" make test reproducer. Günther, please check! Volker (cherry picked from commit 0e9882a65e91e4ab55dc103c7f6aec4ccd966db0) (cherry picked from commit fd59fa500a30a69ed09265bc3871fa640e232422)
-rw-r--r--source3/winbindd/wb_next_grent.c11
-rw-r--r--source3/winbindd/wb_next_pwent.c11
2 files changed, 22 insertions, 0 deletions
diff --git a/source3/winbindd/wb_next_grent.c b/source3/winbindd/wb_next_grent.c
index 5f81bca718d..0e9dbd56d4a 100644
--- a/source3/winbindd/wb_next_grent.c
+++ b/source3/winbindd/wb_next_grent.c
@@ -59,6 +59,11 @@ struct tevent_req *wb_next_grent_send(TALLOC_CTX *mem_ctx,
state->gstate->domain = state->gstate->domain->next;
}
+ if ((state->gstate->domain != NULL)
+ && sid_check_is_domain(&state->gstate->domain->sid)) {
+ state->gstate->domain = state->gstate->domain->next;
+ }
+
if (state->gstate->domain == NULL) {
tevent_req_nterror(req, NT_STATUS_NO_MORE_ENTRIES);
return tevent_req_post(req, ev);
@@ -109,6 +114,12 @@ static void wb_next_grent_fetch_done(struct tevent_req *subreq)
if (state->gstate->num_groups == 0) {
state->gstate->domain = state->gstate->domain->next;
+
+ if ((state->gstate->domain != NULL)
+ && sid_check_is_domain(&state->gstate->domain->sid)) {
+ state->gstate->domain = state->gstate->domain->next;
+ }
+
if (state->gstate->domain == NULL) {
tevent_req_nterror(req, NT_STATUS_NO_MORE_ENTRIES);
return;
diff --git a/source3/winbindd/wb_next_pwent.c b/source3/winbindd/wb_next_pwent.c
index 25ab7b38d3a..fbaaa48b6b8 100644
--- a/source3/winbindd/wb_next_pwent.c
+++ b/source3/winbindd/wb_next_pwent.c
@@ -55,6 +55,11 @@ struct tevent_req *wb_next_pwent_send(TALLOC_CTX *mem_ctx,
state->gstate->domain = state->gstate->domain->next;
}
+ if ((state->gstate->domain != NULL)
+ && sid_check_is_domain(&state->gstate->domain->sid)) {
+ state->gstate->domain = state->gstate->domain->next;
+ }
+
if (state->gstate->domain == NULL) {
tevent_req_nterror(req, NT_STATUS_NO_MORE_ENTRIES);
return tevent_req_post(req, ev);
@@ -101,6 +106,12 @@ static void wb_next_pwent_fetch_done(struct tevent_req *subreq)
if (state->gstate->num_users == 0) {
state->gstate->domain = state->gstate->domain->next;
+
+ if ((state->gstate->domain != NULL)
+ && sid_check_is_domain(&state->gstate->domain->sid)) {
+ state->gstate->domain = state->gstate->domain->next;
+ }
+
if (state->gstate->domain == NULL) {
tevent_req_nterror(req, NT_STATUS_NO_MORE_ENTRIES);
return;