r5775: Remove some unused functions (unions are no longer as special as they used...
[samba.git] / source4 / torture / rpc / remact.c
index 9d725893c9a1804895dc6cf794274402f5d74026..a8dff5f50b0e2dfc7b841945390422221e4a7700 100644 (file)
 #include "includes.h"
 #include "librpc/gen_ndr/ndr_remact.h"
 #include "librpc/gen_ndr/ndr_epmapper.h"
-
-#define CLSID_TEST "00000316-0000-0000-C000-000000000046"
-#define CLSID_SIMPLE "5e9ddec7-5767-11cf-beab-00aa006c3606"
-#define CLSID_COFFEEMACHINE "DB7C21F8-FE33-4C11-AEA5-CEB56F076FBB"
+#include "librpc/gen_ndr/com_dcom.h"
 
 static int test_RemoteActivation(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
 {
        struct RemoteActivation r;
        NTSTATUS status;
        struct GUID iids[2];
-       uint16 protseq[2] = { EPM_PROTOCOL_TCP, EPM_PROTOCOL_NCALRPC };
+       uint16_t protseq[3] = { EPM_PROTOCOL_TCP, EPM_PROTOCOL_NCALRPC, EPM_PROTOCOL_UUID };
 
        ZERO_STRUCT(r.in);
        r.in.this.version.MajorVersion = 5;
        r.in.this.version.MinorVersion = 1;
-       uuid_generate_random(&r.in.this.cid);
+       r.in.this.cid = GUID_random();
        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;
+       r.in.Interfaces = 2;
        GUID_from_string(DCERPC_IUNKNOWN_UUID, &iids[0]);
+       GUID_from_string(DCERPC_ISTREAM_UUID, &iids[1]);
        r.in.pIIDs = iids;
 
        status = dcerpc_RemoteActivation(p, mem_ctx, &r);
        if(NT_STATUS_IS_ERR(status)) {
-               fprintf(stderr, "RemoteActivation: %s\n", nt_errstr(status));
+               printf("RemoteActivation: %s\n", nt_errstr(status));
                return 0;
        }
 
        if(!W_ERROR_IS_OK(r.out.result)) {
-               fprintf(stderr, "RemoteActivation: %s\n", win_errstr(r.out.result));
+               printf("RemoteActivation: %s\n", win_errstr(r.out.result));
                return 0;
        }
 
        if(!W_ERROR_IS_OK(r.out.hr)) {
-               fprintf(stderr, "RemoteActivation: %s\n", win_errstr(r.out.hr));
+               printf("RemoteActivation: %s\n", win_errstr(r.out.hr));
+               return 0;
+       }
+
+       if(!W_ERROR_IS_OK(r.out.results[0])) {
+               printf("RemoteActivation: %s\n", win_errstr(r.out.results[0]));
+               return 0;
+       }
+
+       GUID_from_string(DCERPC_ICLASSFACTORY_UUID, &iids[0]);
+       r.in.Interfaces = 1;
+       r.in.Mode = MODE_GET_CLASS_OBJECT;
+
+       status = dcerpc_RemoteActivation(p, mem_ctx, &r);
+       if(NT_STATUS_IS_ERR(status)) {
+               printf("RemoteActivation(GetClassObject): %s\n", nt_errstr(status));
+               return 0;
+       }
+
+       if(!W_ERROR_IS_OK(r.out.result)) {
+               printf("RemoteActivation(GetClassObject): %s\n", win_errstr(r.out.result));
+               return 0;
+       }
+
+       if(!W_ERROR_IS_OK(r.out.hr)) {
+               printf("RemoteActivation(GetClassObject): %s\n", win_errstr(r.out.hr));
+               return 0;
+       }
+
+       if(!W_ERROR_IS_OK(r.out.results[0])) {
+               printf("RemoteActivation(GetClassObject): %s\n", win_errstr(r.out.results[0]));
                return 0;
        }
 
@@ -86,7 +114,7 @@ BOOL torture_rpc_remact(void)
        if(!test_RemoteActivation(p, mem_ctx))
                ret = False;
 
-       talloc_destroy(mem_ctx);
+       talloc_free(mem_ctx);
 
     torture_rpc_close(p);