svn commit: samba r2952 - in branches/SAMBA_4_0/source: librpc/idl rpc_server/drsuapi torture/rpc

metze at samba.org metze at samba.org
Wed Oct 13 14:25:44 GMT 2004


Author: metze
Date: 2004-10-13 14:25:44 +0000 (Wed, 13 Oct 2004)
New Revision: 2952

WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source&rev=2952&nolog=1

Log:
add idl and torture test for DsCrackNames
(I need to find out what the fields mean but it works)

metze

Modified:
   branches/SAMBA_4_0/source/librpc/idl/drsuapi.idl
   branches/SAMBA_4_0/source/rpc_server/drsuapi/dcesrv_drsuapi.c
   branches/SAMBA_4_0/source/torture/rpc/drsuapi.c


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/idl/drsuapi.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/drsuapi.idl	2004-10-13 13:27:52 UTC (rev 2951)
+++ branches/SAMBA_4_0/source/librpc/idl/drsuapi.idl	2004-10-13 14:25:44 UTC (rev 2952)
@@ -71,9 +71,47 @@
 	NTSTATUS DRSUAPI_GET_NT4_CHANGELOG();
 
 	/*****************/
-        /* Function 0x0c */
-	NTSTATUS DRSUAPI_CRACKNAMES();
+	/* Function 0x0c */
+	typedef struct {
+		unistr *str;
+	} drsuapi_DsCrackNamesInInfo1Names;
 
+	typedef struct {
+		uint32 unknown1;
+		uint32 unknown2;
+		uint32 unknown3;
+		uint32 unknown4;
+		uint32 unknown5;
+		[range(1,10000)] uint32 count;
+		[size_is(count)] drsuapi_DsCrackNamesInInfo1Names *names;
+	} drsuapi_DsCrackNamesInInfo1;
+
+	typedef union {
+		[case(1)] drsuapi_DsCrackNamesInInfo1 info1;
+	} drsuapi_DsCrackNamesInInfo;
+
+	typedef struct {
+		uint32 unknown1;
+		unistr *name1;
+		unistr *name2;
+	} drsuapi_DsCrackNamesOutInfo1Names;
+
+	typedef struct {
+		uint32 count;
+		[size_is(count)] drsuapi_DsCrackNamesOutInfo1Names *names;
+	} drsuapi_DsCrackNamesOutInfo1;
+
+	typedef union {
+		[case(1)] drsuapi_DsCrackNamesOutInfo1 *info1;
+	} drsuapi_DsCrackNamesOutInfo;
+
+	NTSTATUS drsuapi_DsCrackNames(
+		[in,ref] policy_handle *bind_handle,
+		[in, out] uint32 level,
+		[in,switch_is(level)] drsuapi_DsCrackNamesInInfo in,
+		[out,switch_is(level)] drsuapi_DsCrackNamesOutInfo out
+		);
+
 	/*****************/
         /* Function 0x0d */
 	NTSTATUS DRSUAPI_WRITE_SPN();

Modified: branches/SAMBA_4_0/source/rpc_server/drsuapi/dcesrv_drsuapi.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/drsuapi/dcesrv_drsuapi.c	2004-10-13 13:27:52 UTC (rev 2951)
+++ branches/SAMBA_4_0/source/rpc_server/drsuapi/dcesrv_drsuapi.c	2004-10-13 14:25:44 UTC (rev 2952)
@@ -190,10 +190,10 @@
 
 
 /* 
-  DRSUAPI_CRACKNAMES 
+  drsuapi_DsCrackNames 
 */
-static NTSTATUS DRSUAPI_CRACKNAMES(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
-		       struct DRSUAPI_CRACKNAMES *r)
+static NTSTATUS drsuapi_DsCrackNames(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
+		       struct drsuapi_DsCrackNames *r)
 {
 	DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
 }

Modified: branches/SAMBA_4_0/source/torture/rpc/drsuapi.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rpc/drsuapi.c	2004-10-13 13:27:52 UTC (rev 2951)
+++ branches/SAMBA_4_0/source/torture/rpc/drsuapi.c	2004-10-13 14:25:44 UTC (rev 2952)
@@ -48,6 +48,40 @@
 	return ret;
 }
 
+static BOOL test_DsCrackNames(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, 
+		      struct policy_handle *bind_handle)
+{
+	NTSTATUS status;
+	struct drsuapi_DsCrackNames r;
+	struct drsuapi_DsCrackNamesInInfo1Names names[1];
+	BOOL ret = True;
+
+	ZERO_STRUCT(r);
+	r.in.bind_handle = bind_handle;
+	r.in.level = 1;
+	r.in.in.info1.unknown1 = 0x000004e4;
+	r.in.in.info1.unknown2 = 0x00000407;
+	r.in.in.info1.unknown3 = 0x00000000;
+	r.in.in.info1.unknown4 = 0x00000007;
+	r.in.in.info1.unknown5 = 0x00000002;
+	r.in.in.info1.count = 1;
+	r.in.in.info1.names = names;
+	
+	names[0].str = talloc_asprintf(mem_ctx, "%s/", lp_realm());
+
+	status = dcerpc_drsuapi_DsCrackNames(p, mem_ctx, &r);
+	if (!NT_STATUS_IS_OK(status)) {
+		const char *errstr = nt_errstr(status);
+		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
+			errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
+		}
+		printf("drsuapi_DsCrackNames failed - %s\n", errstr);
+		ret = False;
+	}
+
+	return ret;
+}
+
 static BOOL test_DsUnbind(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, 
 			struct policy_handle *bind_handle)
 {
@@ -95,6 +129,10 @@
 		ret = False;
 	}
 
+	if (!test_DsCrackNames(p, mem_ctx, &bind_handle)) {
+		ret = False;
+	}
+
 	if (!test_DsUnbind(p, mem_ctx, &bind_handle)) {
 		ret = False;
 	}



More information about the samba-cvs mailing list