1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

s3:winbindd: fix _wbint_LookupSids() on error

We need to make sure that r->out.domains remains valid,
otherwise we're not able to marshall the response.

Note that wbint_LookupSids() has [out,ref] lsa_RefDomainList *domains,
while lsa_LookupSids() has [out,ref] lsa_RefDomainList **domains.

Pair-Programmed-With: Stefan Metzmacher <metze@samba.org>

Bug: https://bugzilla.samba.org/show_bug.cgi?id=10458
Signed-off-by: Gregor Beck <gbeck@sernet.de>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
This commit is contained in:
Gregor Beck 2014-02-20 13:14:31 +01:00 committed by Andreas Schneider
parent 33f10d06ba
commit 3413e64149

View File

@ -74,6 +74,7 @@ NTSTATUS _wbint_LookupSid(struct pipes_struct *p, struct wbint_LookupSid *r)
NTSTATUS _wbint_LookupSids(struct pipes_struct *p, struct wbint_LookupSids *r) NTSTATUS _wbint_LookupSids(struct pipes_struct *p, struct wbint_LookupSids *r)
{ {
struct winbindd_domain *domain = wb_child_domain(); struct winbindd_domain *domain = wb_child_domain();
struct lsa_RefDomainList *domains = r->out.domains;
NTSTATUS status; NTSTATUS status;
if (domain == NULL) { if (domain == NULL) {
@ -87,7 +88,12 @@ NTSTATUS _wbint_LookupSids(struct pipes_struct *p, struct wbint_LookupSids *r)
* done at the wbint RPC layer. * done at the wbint RPC layer.
*/ */
status = rpc_lookup_sids(p->mem_ctx, domain, r->in.sids, status = rpc_lookup_sids(p->mem_ctx, domain, r->in.sids,
&r->out.domains, &r->out.names); &domains, &r->out.names);
if (domains != NULL) {
r->out.domains = domains;
}
reset_cm_connection_on_error(domain, status); reset_cm_connection_on_error(domain, status);
return status; return status;
} }