diff options
Diffstat (limited to 'source4/lib')
-rw-r--r-- | source4/lib/com/dcom/main.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/source4/lib/com/dcom/main.c b/source4/lib/com/dcom/main.c index 7c9c3b4394..8ef2060eb7 100644 --- a/source4/lib/com/dcom/main.c +++ b/source4/lib/com/dcom/main.c @@ -153,7 +153,7 @@ WERROR dcom_create_object(struct com_context *ctx, struct GUID *clsid, const cha r.in.protseq = protseq; r.in.Interfaces = num_ifaces; r.in.pIIDs = iid; - r.out.ifaces = talloc_array(ctx, struct MInterfacePointer, num_ifaces); + r.out.ifaces = talloc_array(ctx, struct pMInterfacePointer, num_ifaces); r.out.pdsaOxidBindings = &dualstring; status = dcerpc_RemoteActivation(p, ctx, &r); @@ -175,7 +175,7 @@ WERROR dcom_create_object(struct com_context *ctx, struct GUID *clsid, const cha results[i] = r.out.results[i]; (*ip)[i] = NULL; if (W_ERROR_IS_OK(results[i])) { - status = dcom_IUnknown_from_OBJREF(ctx, &(*ip)[i], &r.out.ifaces[i].obj); + status = dcom_IUnknown_from_OBJREF(ctx, &(*ip)[i], &r.out.ifaces[i].ip->obj); if (!NT_STATUS_IS_OK(status)) { results[i] = ntstatus_to_werror(status); } @@ -197,6 +197,7 @@ WERROR dcom_get_class_object(struct com_context *ctx, struct GUID *clsid, const struct DUALSTRINGARRAY dualstring; NTSTATUS status; struct MInterfacePointer pm; + struct pMInterfacePointer ifaces[1]; uint16_t protseq[] = DCOM_NEGOTIATED_PROTOCOLS; if (!server) { @@ -220,7 +221,8 @@ WERROR dcom_get_class_object(struct com_context *ctx, struct GUID *clsid, const r.in.Interfaces = 1; r.in.pIIDs = iid; r.in.Mode = MODE_GET_CLASS_OBJECT; - r.out.ifaces = ± + r.out.ifaces = ifaces; + ifaces[0].ip = ± r.out.pdsaOxidBindings = &dualstring; status = dcerpc_RemoteActivation(p, ctx, &r); |