svn commit: samba r2954 - in branches/SAMBA_4_0/source/rpc_server/drsuapi: .

metze at samba.org metze at samba.org
Wed Oct 13 15:06:44 GMT 2004


Author: metze
Date: 2004-10-13 15:06:43 +0000 (Wed, 13 Oct 2004)
New Revision: 2954

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

Log:
add server cracknames code:

- we currently only do it for our REALM

metze

Modified:
   branches/SAMBA_4_0/source/rpc_server/drsuapi/dcesrv_drsuapi.c


Changeset:
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 15:04:51 UTC (rev 2953)
+++ branches/SAMBA_4_0/source/rpc_server/drsuapi/dcesrv_drsuapi.c	2004-10-13 15:06:43 UTC (rev 2954)
@@ -195,7 +195,47 @@
 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);
+	struct dcesrv_handle *h;
+
+	r->out.level = r->in.level;
+	ZERO_STRUCT(r->out.out);
+
+	DCESRV_PULL_HANDLE(h, r->in.bind_handle, DRSUAPI_BIND_HANDLE);
+
+	switch (r->in.level) {
+		case 1: {
+			int i;
+
+			r->out.out.info1 = talloc_p(mem_ctx, struct drsuapi_DsCrackNamesOutInfo1);
+			NTSTATUS_TALLOC_CHECK(r->out.out.info1);
+
+			r->out.out.info1->names = talloc_array_p(mem_ctx,
+							struct drsuapi_DsCrackNamesOutInfo1Names,
+							r->in.in.info1.count);
+			NTSTATUS_TALLOC_CHECK(r->out.out.info1->names);
+
+			r->out.out.info1->count = r->in.in.info1.count;
+
+			for (i=0; i < r->out.out.info1->count; i++) {
+				const char *name;
+				r->out.out.info1->names[i].unknown1 = 2;
+				r->out.out.info1->names[i].name1 = NULL;
+				r->out.out.info1->names[i].name2 = NULL;
+
+				/* TODO: fill crack the right names! */
+				name = talloc_asprintf(mem_ctx, "%s/", lp_realm());
+				if (strcmp(name, r->in.in.info1.names[i].str) != 0) {
+					continue;
+				}
+				r->out.out.info1->names[i].unknown1 = 0;
+				r->out.out.info1->names[i].name1 = talloc_asprintf(mem_ctx, "%s", lp_realm());
+				r->out.out.info1->names[i].name2 = talloc_asprintf(mem_ctx, "%s\\", lp_workgroup());
+			}
+			return NT_STATUS_OK;
+		}
+	}
+	
+	return NT_STATUS_INVALID_LEVEL;
 }
 
 



More information about the samba-cvs mailing list