summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/lib/com/dcom/main.c8
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);