s3-winbind: Fix segfault if we can't map the last user.
authorAndreas Schneider <asn@samba.org>
Tue, 3 Jan 2012 15:55:25 +0000 (16:55 +0100)
committerKarolin Seeger <kseeger@samba.org>
Mon, 5 Mar 2012 19:54:29 +0000 (20:54 +0100)
This fixes bug #8678.

The issue is caused by bug #8608.

Autobuild-User: Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date: Wed Jan  4 18:30:53 CET 2012 on sn-devel-104
(cherry picked from commit b9d208bdaa9da2a5ae534481865efc881b851b01)
(cherry picked from commit 23db6e7cf65bdd3974a4857dda0be6ad7d758b9a)
(cherry picked from commit b16104ddf431d81f673bc3cf5e998c0f9421f2e9)

source3/winbindd/wb_next_pwent.c

index e5b5e299bfbab57771c868d4dc940450476ac726..0970ce75fdbdf812cab83ff633bdfb05e4be5bcf 100644 (file)
@@ -154,6 +154,24 @@ static void wb_next_pwent_fill_done(struct tevent_req *subreq)
        if (NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED)) {
                state->gstate->next_user += 1;
 
+               if (state->gstate->next_user >= state->gstate->num_users) {
+                       TALLOC_FREE(state->gstate->users);
+
+                       state->gstate->domain = wb_next_find_domain(state->gstate->domain);
+                       if (state->gstate->domain == NULL) {
+                               tevent_req_nterror(req, NT_STATUS_NO_MORE_ENTRIES);
+                               return;
+                       }
+
+                       subreq = wb_query_user_list_send(state, state->ev,
+                                       state->gstate->domain);
+                       if (tevent_req_nomem(subreq, req)) {
+                               return;
+                       }
+                       tevent_req_set_callback(subreq, wb_next_pwent_fetch_done, req);
+                       return;
+               }
+
                subreq = wb_fill_pwent_send(state,
                                            state->ev,
                                            &state->gstate->users[state->gstate->next_user],