From 485df40bf96abbd80d69ff2a9fdca86516a4eae7 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 7 Nov 2004 16:47:46 +0000 Subject: r3601: Lots of smaller DCOM updates and fixes. Adds oxid tables, proper use of contexts. (This used to be commit 93eb3cd99c4fb065a69eabcead0c33804259c976) --- source4/librpc/config.mk | 2 +- source4/librpc/idl/dcom.idl | 13 ++++++------- source4/librpc/rpc/dcerpc.c | 6 +++--- 3 files changed, 10 insertions(+), 11 deletions(-) (limited to 'source4/librpc') diff --git a/source4/librpc/config.mk b/source4/librpc/config.mk index 09e2a278c4..b16c42b938 100644 --- a/source4/librpc/config.mk +++ b/source4/librpc/config.mk @@ -81,6 +81,6 @@ ADD_OBJ_FILES = \ ################################################ # Start SUBSYSTEM LIBRPC [SUBSYSTEM::LIBRPC] -REQUIRED_SUBSYSTEMS = LIBNDR_RAW LIBNDR_GEN LIBRPC_RAW +REQUIRED_SUBSYSTEMS = LIBNDR_RAW LIBNDR_GEN LIBRPC_RAW LIBDCOM # End SUBSYSTEM LIBRPC ################################################ diff --git a/source4/librpc/idl/dcom.idl b/source4/librpc/idl/dcom.idl index 615d812b47..41e2ccb73c 100644 --- a/source4/librpc/idl/dcom.idl +++ b/source4/librpc/idl/dcom.idl @@ -151,19 +151,19 @@ interface ObjectRpcBaseTypes /* DUALSTRINGARRAYS are the return type for arrays of network addresses, */ /* arrays of endpoints and arrays of both used in many ORPC interfaces */ - typedef struct + typedef [public] struct { uint16 wTowerId; /* Cannot be zero. */ - uint16 aNetworkAddr; /* Zero terminated. */ + nstring NetworkAddr; } STRINGBINDING; const uint16 COM_C_AUTHZ_NONE = 0xffff; - typedef struct + typedef [public] struct { uint16 wAuthnSvc; /* Cannot be zero. */ uint16 wAuthzSvc; /* Must not be zero. */ - uint16 aPrincName; /* Zero terminated. */ + nstring PrincName; } SECURITYBINDING; @@ -177,7 +177,6 @@ interface ObjectRpcBaseTypes [size_is(wNumEntries)] uint16 aStringArray[]; } DUALSTRINGARRAY; - /* signature value for OBJREF (object reference, actually the */ /* marshaled form of a COM interface). */ const uint32 OBJREF_SIGNATURE = 0x574f454d; /* 'MEOW' */ @@ -219,14 +218,14 @@ interface ObjectRpcBaseTypes typedef struct { STDOBJREF std; /* standard objref */ - DUALSTRINGARRAY saResAddr; /* resolver address */ + [flag(NDR_REMAINING)] DATA_BLOB saResAddr; /* resolver address */ } u_standard; typedef struct { STDOBJREF std; /* standard objref */ GUID clsid; /* Clsid of handler code */ - DUALSTRINGARRAY saResAddr; /* resolver address */ + [flag(NDR_REMAINING)] DATA_BLOB saResAddr; /* resolver address */ } u_handler; typedef struct diff --git a/source4/librpc/rpc/dcerpc.c b/source4/librpc/rpc/dcerpc.c index 27292bc8c3..beccac78ca 100644 --- a/source4/librpc/rpc/dcerpc.c +++ b/source4/librpc/rpc/dcerpc.c @@ -974,7 +974,7 @@ NTSTATUS dcerpc_request_recv(struct rpc_request *req, perform a full request/response pair on a dcerpc pipe */ NTSTATUS dcerpc_request(struct dcerpc_pipe *p, - struct GUID *object, + struct OBJREF *object, uint16_t opnum, TALLOC_CTX *mem_ctx, DATA_BLOB *stub_data_in, @@ -1141,7 +1141,7 @@ static NTSTATUS dcerpc_ndr_validate_out(struct dcerpc_pipe *p, call dcerpc_ndr_request_recv() to receive the answer */ struct rpc_request *dcerpc_ndr_request_send(struct dcerpc_pipe *p, - struct GUID *object, + struct OBJREF *object, uint32_t opnum, TALLOC_CTX *mem_ctx, NTSTATUS (*ndr_push)(struct ndr_push *, int, void *), @@ -1278,7 +1278,7 @@ NTSTATUS dcerpc_ndr_request_recv(struct rpc_request *req) standard format */ NTSTATUS dcerpc_ndr_request(struct dcerpc_pipe *p, - struct GUID *object, + struct OBJREF *object, uint32_t opnum, TALLOC_CTX *mem_ctx, NTSTATUS (*ndr_push)(struct ndr_push *, int, void *), -- cgit