Ignore:
Timestamp:
Nov 27, 2012, 4:43:17 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: updated trunk to 3.6.0

Location:
trunk/server
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/server

  • trunk/server/source4/libnet/libnet_user.c

    r414 r745  
    179179        }
    180180
     181        talloc_free(c);
    181182        return status;
    182183}
     
    347348        }
    348349       
     350        talloc_free(c);
    349351        return status;
    350352}
     
    573575{
    574576        NTSTATUS status = composite_wait(c);
     577
     578        talloc_free(c);
    575579        return status;
    576580}
     
    869873
    870874        talloc_free(c);
    871        
    872875        return status;
    873876}
     
    910913
    911914static void continue_lsa_domain_opened(struct composite_context *ctx);
    912 static void continue_domain_queried(struct rpc_request *req);
     915static void continue_domain_queried(struct tevent_req *subreq);
    913916static void continue_samr_domain_opened(struct composite_context *ctx);
    914 static void continue_users_enumerated(struct rpc_request *req);
     917static void continue_users_enumerated(struct tevent_req *subreq);
    915918
    916919
     
    931934        struct composite_context *c;
    932935        struct userlist_state *s;
    933         struct rpc_request *query_req;
     936        struct tevent_req *subreq;
    934937        bool prereq_met = false;
    935938
     
    962965
    963966        /* send the request */
    964         query_req = dcerpc_lsa_QueryInfoPolicy_send(ctx->lsa.pipe, c, &s->query_domain);
    965         if (composite_nomem(query_req, c)) return c;
    966 
    967         composite_continue_rpc(c, query_req, continue_domain_queried, c);
     967        subreq = dcerpc_lsa_QueryInfoPolicy_r_send(s, c->event_ctx,
     968                                                   ctx->lsa.pipe->binding_handle,
     969                                                   &s->query_domain);
     970        if (composite_nomem(subreq, c)) return c;
     971
     972        tevent_req_set_callback(subreq, continue_domain_queried, c);
    968973        return c;
    969974}
     
    978983        struct composite_context *c;
    979984        struct userlist_state *s;
    980         struct rpc_request *query_req;
     985        struct tevent_req *subreq;
    981986       
    982987        c = talloc_get_type(ctx->async.private_data, struct composite_context);
     
    994999
    9951000        /* send the request */
    996         query_req = dcerpc_lsa_QueryInfoPolicy_send(s->ctx->lsa.pipe, c, &s->query_domain);
    997         if (composite_nomem(query_req, c)) return;
    998 
    999         composite_continue_rpc(c, query_req, continue_domain_queried, c);
     1001        subreq = dcerpc_lsa_QueryInfoPolicy_r_send(s, c->event_ctx,
     1002                                                   s->ctx->lsa.pipe->binding_handle,
     1003                                                   &s->query_domain);
     1004        if (composite_nomem(subreq, c)) return;
     1005
     1006        tevent_req_set_callback(subreq, continue_domain_queried, c);
    10001007}
    10011008
     
    10051012 * provided a valid samr handle is opened
    10061013 */
    1007 static void continue_domain_queried(struct rpc_request *req)
     1014static void continue_domain_queried(struct tevent_req *subreq)
    10081015{
    10091016        struct composite_context *c;
    10101017        struct userlist_state *s;
    1011         struct rpc_request *enum_req;
    10121018        bool prereq_met = false;
    10131019       
    1014         c = talloc_get_type(req->async.private_data, struct composite_context);
     1020        c = tevent_req_callback_data(subreq, struct composite_context);
    10151021        s = talloc_get_type(c->private_data, struct userlist_state);
    10161022
    10171023        /* receive result of rpc request */
    1018         c->status = dcerpc_ndr_request_recv(req);
     1024        c->status = dcerpc_lsa_QueryInfoPolicy_r_recv(subreq, s);
     1025        TALLOC_FREE(subreq);
    10191026        if (!composite_is_ok(c)) return;
    10201027
     
    10391046
    10401047        /* send the request */
    1041         enum_req = dcerpc_samr_EnumDomainUsers_send(s->ctx->samr.pipe, c, &s->user_list);
    1042         if (composite_nomem(enum_req, c)) return;
    1043 
    1044         composite_continue_rpc(c, enum_req, continue_users_enumerated, c);
     1048        subreq = dcerpc_samr_EnumDomainUsers_r_send(s, c->event_ctx,
     1049                                                    s->ctx->samr.pipe->binding_handle,
     1050                                                    &s->user_list);
     1051        if (composite_nomem(subreq, c)) return;
     1052
     1053        tevent_req_set_callback(subreq, continue_users_enumerated, c);
    10451054}
    10461055
     
    10541063        struct composite_context *c;
    10551064        struct userlist_state *s;
    1056         struct rpc_request *enum_req;
     1065        struct tevent_req *subreq;
    10571066
    10581067        c = talloc_get_type(ctx->async.private_data, struct composite_context);
     
    10751084       
    10761085        /* send the request */
    1077         enum_req = dcerpc_samr_EnumDomainUsers_send(s->ctx->samr.pipe, c, &s->user_list);
    1078         if (composite_nomem(enum_req, c)) return;
    1079 
    1080         composite_continue_rpc(c, enum_req, continue_users_enumerated, c);
     1086        subreq = dcerpc_samr_EnumDomainUsers_r_send(s, c->event_ctx,
     1087                                                    s->ctx->samr.pipe->binding_handle,
     1088                                                    &s->user_list);
     1089        if (composite_nomem(subreq, c)) return;
     1090
     1091        tevent_req_set_callback(subreq, continue_users_enumerated, c);
    10811092}
    10821093
     
    10851096 * Stage 2: receive enumerated users and their rids
    10861097 */
    1087 static void continue_users_enumerated(struct rpc_request *req)
     1098static void continue_users_enumerated(struct tevent_req *subreq)
    10881099{
    10891100        struct composite_context *c;
    10901101        struct userlist_state *s;
    1091         int i;
    1092 
    1093         c = talloc_get_type(req->async.private_data, struct composite_context);
     1102        uint32_t i;
     1103
     1104        c = tevent_req_callback_data(subreq, struct composite_context);
    10941105        s = talloc_get_type(c->private_data, struct userlist_state);
    10951106
    10961107        /* receive result of rpc request */
    1097         c->status = dcerpc_ndr_request_recv(req);
     1108        c->status = dcerpc_samr_EnumDomainUsers_r_recv(subreq, s);
     1109        TALLOC_FREE(subreq);
    10981110        if (!composite_is_ok(c)) return;
    10991111
     
    11271139                       
    11281140                        /* username */
    1129                         s->users[i].username = talloc_strdup(c, entry->name.string);
     1141                        s->users[i].username = talloc_strdup(s->users, entry->name.string);
    11301142                        if (composite_nomem(s->users[i].username, c)) return;
    11311143
    11321144                        /* sid string */
    1133                         s->users[i].sid = dom_sid_string(c, user_sid);
     1145                        s->users[i].sid = dom_sid_string(s->users, user_sid);
    11341146                        if (composite_nomem(s->users[i].sid, c)) return;
    11351147                }
     
    11601172
    11611173        if (c == NULL || mem_ctx == NULL || r == NULL) {
     1174                talloc_free(c);
    11621175                return NT_STATUS_INVALID_PARAMETER;
    11631176        }
    1164        
     1177
    11651178        status = composite_wait(c);
    11661179        if (NT_STATUS_IS_OK(status) ||
     
    11871200        }
    11881201
     1202        talloc_free(c);
    11891203        return status;
    11901204}
Note: See TracChangeset for help on using the changeset viewer.