svn commit: samba r3340 - in branches/SAMBA_4_0/source: lib/registry/common lib/registry/reg_backend_ldb lib/registry/reg_backend_rpc rpc_server/winreg torture/rpc

jelmer at samba.org jelmer at samba.org
Thu Oct 28 23:06:13 GMT 2004


Author: jelmer
Date: 2004-10-28 23:06:12 +0000 (Thu, 28 Oct 2004)
New Revision: 3340

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

Log:
Various fixes in the registry code. Implement the EnumKey call 
in the server.

Modified:
   branches/SAMBA_4_0/source/lib/registry/common/reg_interface.c
   branches/SAMBA_4_0/source/lib/registry/reg_backend_ldb/reg_backend_ldb.c
   branches/SAMBA_4_0/source/lib/registry/reg_backend_rpc/reg_backend_rpc.c
   branches/SAMBA_4_0/source/rpc_server/winreg/rpc_winreg.c
   branches/SAMBA_4_0/source/torture/rpc/winreg.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/registry/common/reg_interface.c
===================================================================
--- branches/SAMBA_4_0/source/lib/registry/common/reg_interface.c	2004-10-28 22:58:21 UTC (rev 3339)
+++ branches/SAMBA_4_0/source/lib/registry/common/reg_interface.c	2004-10-28 23:06:12 UTC (rev 3340)
@@ -191,7 +191,10 @@
 
 	if(!W_ERROR_IS_OK(werr)) return werr;
 	
-	if(!ret->root) return WERR_GENERAL_FAILURE;
+	if(!ret->root) {
+		DEBUG(0, ("Backend %s didn't provide root key!\n", backend));
+		return WERR_GENERAL_FAILURE;
+	}
 
 	ret->root->hive = ret;
 	ret->root->name = NULL;

Modified: branches/SAMBA_4_0/source/lib/registry/reg_backend_ldb/reg_backend_ldb.c
===================================================================
--- branches/SAMBA_4_0/source/lib/registry/reg_backend_ldb/reg_backend_ldb.c	2004-10-28 22:58:21 UTC (rev 3339)
+++ branches/SAMBA_4_0/source/lib/registry/reg_backend_ldb/reg_backend_ldb.c	2004-10-28 23:06:12 UTC (rev 3340)
@@ -146,7 +146,10 @@
 	ldb_set_debug_stderr(c);
 	hive->backend_data = c;
 
-	return ldb_open_key(mem_ctx, hive, "", k);
+	hive->root = talloc_zero_p(mem_ctx, struct registry_key);
+	hive->root->name = talloc_strdup(mem_ctx, "");
+
+	return WERR_OK;
 }
 
 static struct registry_operations reg_backend_ldb = {

Modified: branches/SAMBA_4_0/source/lib/registry/reg_backend_rpc/reg_backend_rpc.c
===================================================================
--- branches/SAMBA_4_0/source/lib/registry/reg_backend_rpc/reg_backend_rpc.c	2004-10-28 22:58:21 UTC (rev 3339)
+++ branches/SAMBA_4_0/source/lib/registry/reg_backend_rpc/reg_backend_rpc.c	2004-10-28 23:06:12 UTC (rev 3340)
@@ -85,7 +85,7 @@
 
 static WERROR rpc_query_key(struct registry_key *k);
 
-WERROR rpc_list_hives (TALLOC_CTX *mem_ctx, const char *location, const char *credentials, char ***hives)
+static WERROR rpc_list_hives (TALLOC_CTX *mem_ctx, const char *location, const char *credentials, char ***hives)
 {
 	int i = 0;
 	*hives = talloc_p(mem_ctx, char *);

Modified: branches/SAMBA_4_0/source/rpc_server/winreg/rpc_winreg.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/winreg/rpc_winreg.c	2004-10-28 22:58:21 UTC (rev 3339)
+++ branches/SAMBA_4_0/source/rpc_server/winreg/rpc_winreg.c	2004-10-28 23:06:12 UTC (rev 3340)
@@ -177,7 +177,15 @@
 	h = dcesrv_handle_fetch(dce_call->conn, r->in.handle, HTYPE_REGKEY);
 	DCESRV_CHECK_HANDLE(h);
 
-	key = h->data;
+	r->out.result = reg_key_get_subkey_by_index(mem_ctx, (struct registry_key *)h->data, r->in.enum_index, &key);
+
+	if (W_ERROR_IS_OK(r->out.result)) {
+		r->out.key_name_len = strlen(key->name);
+		r->out.out_name = talloc_zero_p(mem_ctx, struct winreg_EnumKeyNameResponse);
+		r->out.out_name->name = key->name;
+		r->out.class = talloc_zero_p(mem_ctx, struct winreg_String);
+		r->out.last_changed_time = talloc_zero_p(mem_ctx, struct winreg_Time);
+	}
 	
 	return WERR_NOT_SUPPORTED;
 }

Modified: branches/SAMBA_4_0/source/torture/rpc/winreg.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rpc/winreg.c	2004-10-28 22:58:21 UTC (rev 3339)
+++ branches/SAMBA_4_0/source/torture/rpc/winreg.c	2004-10-28 23:06:12 UTC (rev 3340)
@@ -51,6 +51,11 @@
 		return False;
 	}
 
+	if (!W_ERROR_IS_OK(r.out.result)) {
+		printf("GetVersion failed - %s\n", win_errstr(r.out.result));
+		return False;
+	}
+
 	return True;
 }
 
@@ -106,6 +111,11 @@
 		return False;
 	}
 
+	if (!W_ERROR_IS_OK(r.out.result)) {
+		printf("CloseKey failed - %s\n", win_errstr(r.out.result));
+		return False;
+	}
+
 	return True;
 }
 
@@ -228,6 +238,8 @@
 	struct winreg_Time tm;
 	NTSTATUS status;
 
+	printf("Testing EnumKey\n\n");
+
 	r.in.handle = handle;
 	r.in.enum_index = 0;
 	r.in.key_name_len = r.out.key_name_len = 0;



More information about the samba-cvs mailing list