svn commit: samba r3487 - in branches/SAMBA_4_0/source: librpc/idl torture/rpc

jelmer at samba.org jelmer at samba.org
Tue Nov 2 15:32:58 GMT 2004


Author: jelmer
Date: 2004-11-02 15:32:58 +0000 (Tue, 02 Nov 2004)
New Revision: 3487

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=3487

Log:
RemoteActivation works! The only odd bit is that I get either a 
NT_STATUS_BUFFER_TOO_SMALL or a NT_STATUS_NET_WRITE_FAULT if I try other user accounts. Must've got something to do with the auth padding...

Modified:
   branches/SAMBA_4_0/source/librpc/idl/dcom.idl
   branches/SAMBA_4_0/source/torture/rpc/remact.c


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/idl/dcom.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/dcom.idl	2004-11-02 14:52:45 UTC (rev 3486)
+++ branches/SAMBA_4_0/source/librpc/idl/dcom.idl	2004-11-02 15:32:58 UTC (rev 3487)
@@ -234,7 +234,7 @@
 		GUID clsid; /* Clsid of unmarshaling code */
 		uint32 cbExtension; /* size of extension data */
 		uint32 size; /* size of data that follows */
-		[size_is(size), ref] uint8 *pData; /* extension + class specific data */
+		[size_is(size)] uint8 pData[]; /* extension + class specific data */
 	} u_custom;
 
 	typedef struct
@@ -262,7 +262,7 @@
 	typedef [public] struct 
 	{
 		uint32 size;
-		[size_is(size)] uint8 data[];
+		[subcontext(4)] OBJREF obj;
 	} MInterfacePointer;
 }
 
@@ -278,8 +278,8 @@
 	/* Function 0x00 */
 	/* Returns the interface with the specified IID 
 	   if implemented by this object */
-	[local] WERROR QueryInterface([in] IID *riid
-	   /*FIXME, [out] void **data*/);
+	[local] WERROR QueryInterface([in] IID *riid,
+	   [out,iid_is(riid)] MInterfacePointer *data);
 
 	/*****************/
 	/* Function 0x01 */
@@ -297,9 +297,9 @@
 	pointer_default(unique)
 ] interface IClassFactory : IUnknown
 {
-	[local] WERROR CreateInstance(/*FIXME[in] IUnknown *pUnknown, 
+	[local] WERROR CreateInstance(/*FIXME[in] IUnknown *pUnknown*/, 
 			       [in] IID *riid,
-			       [out, iid_is(riid)] void **ppv*/);
+			       [out, iid_is(riid)] MInterfacePointer *ppv);
 
 	[call_as(CreateInstance)] WERROR RemoteCreateInstance();
 
@@ -338,7 +338,7 @@
 		[in] uint32 cRefs, /* count of AddRefs requested */
 		[in] uint16 cIids, /* count of IIDs that follow */
 		[in, size_is(cIids)] IID* iids, /*, // IIDs to QI for */
-		 [out] MInterfacePointer *ip
+		[out, size_is(cIids)] MInterfacePointer *ip
 		);
 
 	typedef struct 
@@ -368,8 +368,8 @@
 	void RemoteGetClassObject([in] GUID clsid, 
 											  [in] uint32 context,
 											  [in] LCID locale,
-											  [in] GUID iid/*FIXME,
-											  [out, iid_is(iid)] void *data */);
+											  [in] GUID iid,
+											  [out, iid_is(iid)] MInterfacePointer data);
 }
 
 /* Looks like this is the equivalent of .NET's 

Modified: branches/SAMBA_4_0/source/torture/rpc/remact.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rpc/remact.c	2004-11-02 14:52:45 UTC (rev 3486)
+++ branches/SAMBA_4_0/source/torture/rpc/remact.c	2004-11-02 15:32:58 UTC (rev 3487)
@@ -32,7 +32,7 @@
 	struct RemoteActivation r;
 	NTSTATUS status;
 	struct GUID iids[2];
-	uint16 protseq[2] = { EPM_PROTOCOL_TCP, EPM_PROTOCOL_NCALRPC };
+	uint16 protseq[3] = { EPM_PROTOCOL_TCP, EPM_PROTOCOL_NCALRPC, EPM_PROTOCOL_UUID };
 
 	ZERO_STRUCT(r.in);
 	r.in.this.version.MajorVersion = 5;
@@ -40,7 +40,7 @@
 	uuid_generate_random(&r.in.this.cid);
 	GUID_from_string(CLSID_SIMPLE, &r.in.Clsid);
 	r.in.ClientImpLevel = RPC_C_IMP_LEVEL_IDENTIFY;
-	r.in.num_protseqs = 2;
+	r.in.num_protseqs = 3;
 	r.in.protseq = protseq;
 	r.in.Interfaces = 1;
 	GUID_from_string(DCERPC_IUNKNOWN_UUID, &iids[0]);



More information about the samba-cvs mailing list