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