svn commit: samba r24216 - in branches/4.0-regwrite: . source/lib/registry source/lib/registry/tests

jelmer at samba.org jelmer at samba.org
Sat Aug 4 18:15:59 GMT 2007


Author: jelmer
Date: 2007-08-04 18:15:53 +0000 (Sat, 04 Aug 2007)
New Revision: 24216

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

Log:
Support creating regf files, run tests against regf.
Modified:
   branches/4.0-regwrite/
   branches/4.0-regwrite/source/lib/registry/hive.h
   branches/4.0-regwrite/source/lib/registry/regf.c
   branches/4.0-regwrite/source/lib/registry/tests/hive.c


Changeset:

Property changes on: branches/4.0-regwrite
___________________________________________________________________
Name: bzr:revision-info
   - timestamp: Tue 2007-06-12 22:27:36.690999985 +0200
committer: Jelmer Vernooij <jelmer at samba.org>
properties: 
	branch-nick: 4.0-regwrite
	rebase-of: jelmer at samba.org-20070612202736-meu8bltye0rberi6

   + timestamp: Wed 2007-06-13 01:11:37.940999985 +0200
committer: Jelmer Vernooij <jelmer at samba.org>
properties: 
	branch-nick: 4.0-regwrite
	rebase-of: jelmer at samba.org-20070612231137-i8mbl1sgmcfkb5vn

Name: bzr:revision-id:v3-trunk0
   - 11140 jelmer at samba.org-20070113195019-yrx40nap220myng0-svn3-upgrade
11142 jelmer at samba.org-20070113195431-nshumfy5z00cpnaj-svn3-upgrade
11143 jelmer at samba.org-20070113195555-am0swaxzsoxp05p0-svn3-upgrade
11144 wilco at baanhofman.nl-20070114042604-b7pwqobkrbmlbp8p-svn3-upgrade
11145 wilco at baanhofman.nl-20070114042644-fa3gbnlhall7nkry-svn3-upgrade
11146 wilco at baanhofman.nl-20070114042712-7ueqyvk12ki1frc5-svn3-upgrade
11147 wilco at baanhofman.nl-20070114042737-pwu8etpcs7lmwsms-svn3-upgrade
11148 wilco at baanhofman.nl-20070114043501-7g3vsn55rrr643z6-svn3-upgrade
11149 wilco at baanhofman.nl-20070114061526-fpg1tdt07virwgdk-svn3-upgrade
11150 wilco at baanhofman.nl-20070114133602-npguwp5mbuki5qlp-svn3-upgrade
11151 wilco at baanhofman.nl-20070114134318-79ylyc0gzh43xhqi-svn3-upgrade
11152 wilco at baanhofman.nl-20070114151541-6adzkudwihn30k9j-svn3-upgrade
11153 wilco at baanhofman.nl-20070114152236-z6iel538oen6t8g5-svn3-upgrade
11154 jelmer at samba.org-20070115165838-maz3nw52ijbba8rk-svn3-upgrade
11155 jelmer at samba.org-20070115170435-ert8ib689dhntd4p-svn3-upgrade
11156 jelmer at samba.org-20070115235410-krfav3ng4in38pkx-svn3-upgrade
11157 jelmer at samba.org-20070116222757-087aafuwkwfw4267-svn3-upgrade
11158 jelmer at samba.org-20070117013853-mfuqd1o46k44pk2d-svn3-upgrade
11159 jelmer at samba.org-20070117022606-q54g08ss30u86c5c-svn3-upgrade
11160 jelmer at samba.org-20070124130019-zt6jr00m7df9ur0m-svn3-upgrade
11161 jelmer at samba.org-20070124131946-1yxj4h6b092i8fwd-svn3-upgrade
11162 jelmer at samba.org-20070207151808-znhiwyn0cbnuah7z-svn3-upgrade
11163 jelmer at samba.org-20070208155904-yfb5n63xvx2w0kzz-svn3-upgrade
11164 jelmer at samba.org-20070208161920-v3bjwnhfqy4f6j6y-svn3-upgrade
11165 jelmer at samba.org-20070208171835-589fvhzi1hilvnan-svn3-upgrade
11166 jelmer at samba.org-20070210150222-mpmii8ak5w25btqc-svn3-upgrade
11167 jelmer at samba.org-20070210150533-khwd9jnhx7sqsbo6-svn3-upgrade
11168 jelmer at samba.org-20070212210015-vfey1bupuo237gtc-svn3-upgrade
11169 jelmer at samba.org-20070212210746-y5062ss2jjup80c0-svn3-upgrade
11170 jelmer at samba.org-20070212235354-htyicol9aj4sbk5l-svn3-upgrade
11171 jelmer at samba.org-20070221113700-q1sittkxd3a14jwk-svn3-upgrade
11172 jelmer at samba.org-20070227013556-0w8d95jjxfp1dstd-svn3-upgrade
11173 jelmer at samba.org-20070304145613-pufes2hspszib9qv-svn3-upgrade
11174 jelmer at samba.org-20070304184755-bgf26jhs49nt7s2u-svn3-upgrade
11175 jelmer at samba.org-20070304184903-gwgc00z1gtbmb01b-svn3-upgrade
11176 jelmer at samba.org-20070418170502-zvjkpzrur94nevvb-svn3-upgrade
11177 jelmer at samba.org-20070423140539-m81ruspga5mhbmdm-svn3-upgrade
11178 jelmer at samba.org-20070423141635-i6jhd2syudt5vry4-svn3-upgrade
11179 jelmer at samba.org-20070601151710-8xoranh864s3h1rs-svn3-upgrade
11180 jelmer at samba.org-20070602140325-y0nwln7k17vaj14o-svn3-upgrade
11181 jelmer at samba.org-20070602152504-3bij55pqljimwz31-svn3-upgrade
11182 jelmer at samba.org-20070608215652-x6m0ejk982bzfp76-svn3-upgrade
11183 jelmer at samba.org-20070610222652-11vkd62zyiyk971l-svn3-upgrade
11184 jelmer at samba.org-20070610234755-tpxetmbupthvqfp8-svn3-upgrade
11185 jelmer at samba.org-20070611134928-pew4ydd6a0qnh3iv-svn3-upgrade
11186 jelmer at samba.org-20070612165440-1x7k1m3nb1bzbal0-svn3-upgrade
11187 jelmer at samba.org-20070612200826-54acueedast7lnmr-svn3-upgrade
11188 jelmer at samba.org-20070612202736-meu8bltye0rberi6-svn3-upgrade

   + 11140 jelmer at samba.org-20070113195019-yrx40nap220myng0-svn3-upgrade
11142 jelmer at samba.org-20070113195431-nshumfy5z00cpnaj-svn3-upgrade
11143 jelmer at samba.org-20070113195555-am0swaxzsoxp05p0-svn3-upgrade
11144 wilco at baanhofman.nl-20070114042604-b7pwqobkrbmlbp8p-svn3-upgrade
11145 wilco at baanhofman.nl-20070114042644-fa3gbnlhall7nkry-svn3-upgrade
11146 wilco at baanhofman.nl-20070114042712-7ueqyvk12ki1frc5-svn3-upgrade
11147 wilco at baanhofman.nl-20070114042737-pwu8etpcs7lmwsms-svn3-upgrade
11148 wilco at baanhofman.nl-20070114043501-7g3vsn55rrr643z6-svn3-upgrade
11149 wilco at baanhofman.nl-20070114061526-fpg1tdt07virwgdk-svn3-upgrade
11150 wilco at baanhofman.nl-20070114133602-npguwp5mbuki5qlp-svn3-upgrade
11151 wilco at baanhofman.nl-20070114134318-79ylyc0gzh43xhqi-svn3-upgrade
11152 wilco at baanhofman.nl-20070114151541-6adzkudwihn30k9j-svn3-upgrade
11153 wilco at baanhofman.nl-20070114152236-z6iel538oen6t8g5-svn3-upgrade
11154 jelmer at samba.org-20070115165838-maz3nw52ijbba8rk-svn3-upgrade
11155 jelmer at samba.org-20070115170435-ert8ib689dhntd4p-svn3-upgrade
11156 jelmer at samba.org-20070115235410-krfav3ng4in38pkx-svn3-upgrade
11157 jelmer at samba.org-20070116222757-087aafuwkwfw4267-svn3-upgrade
11158 jelmer at samba.org-20070117013853-mfuqd1o46k44pk2d-svn3-upgrade
11159 jelmer at samba.org-20070117022606-q54g08ss30u86c5c-svn3-upgrade
11160 jelmer at samba.org-20070124130019-zt6jr00m7df9ur0m-svn3-upgrade
11161 jelmer at samba.org-20070124131946-1yxj4h6b092i8fwd-svn3-upgrade
11162 jelmer at samba.org-20070207151808-znhiwyn0cbnuah7z-svn3-upgrade
11163 jelmer at samba.org-20070208155904-yfb5n63xvx2w0kzz-svn3-upgrade
11164 jelmer at samba.org-20070208161920-v3bjwnhfqy4f6j6y-svn3-upgrade
11165 jelmer at samba.org-20070208171835-589fvhzi1hilvnan-svn3-upgrade
11166 jelmer at samba.org-20070210150222-mpmii8ak5w25btqc-svn3-upgrade
11167 jelmer at samba.org-20070210150533-khwd9jnhx7sqsbo6-svn3-upgrade
11168 jelmer at samba.org-20070212210015-vfey1bupuo237gtc-svn3-upgrade
11169 jelmer at samba.org-20070212210746-y5062ss2jjup80c0-svn3-upgrade
11170 jelmer at samba.org-20070212235354-htyicol9aj4sbk5l-svn3-upgrade
11171 jelmer at samba.org-20070221113700-q1sittkxd3a14jwk-svn3-upgrade
11172 jelmer at samba.org-20070227013556-0w8d95jjxfp1dstd-svn3-upgrade
11173 jelmer at samba.org-20070304145613-pufes2hspszib9qv-svn3-upgrade
11174 jelmer at samba.org-20070304184755-bgf26jhs49nt7s2u-svn3-upgrade
11175 jelmer at samba.org-20070304184903-gwgc00z1gtbmb01b-svn3-upgrade
11176 jelmer at samba.org-20070418170502-zvjkpzrur94nevvb-svn3-upgrade
11177 jelmer at samba.org-20070423140539-m81ruspga5mhbmdm-svn3-upgrade
11178 jelmer at samba.org-20070423141635-i6jhd2syudt5vry4-svn3-upgrade
11179 jelmer at samba.org-20070601151710-8xoranh864s3h1rs-svn3-upgrade
11180 jelmer at samba.org-20070602140325-y0nwln7k17vaj14o-svn3-upgrade
11181 jelmer at samba.org-20070602152504-3bij55pqljimwz31-svn3-upgrade
11182 jelmer at samba.org-20070608215652-x6m0ejk982bzfp76-svn3-upgrade
11183 jelmer at samba.org-20070610222652-11vkd62zyiyk971l-svn3-upgrade
11184 jelmer at samba.org-20070610234755-tpxetmbupthvqfp8-svn3-upgrade
11185 jelmer at samba.org-20070611134928-pew4ydd6a0qnh3iv-svn3-upgrade
11186 jelmer at samba.org-20070612165440-1x7k1m3nb1bzbal0-svn3-upgrade
11187 jelmer at samba.org-20070612200826-54acueedast7lnmr-svn3-upgrade
11188 jelmer at samba.org-20070612202736-meu8bltye0rberi6-svn3-upgrade
11189 jelmer at samba.org-20070612231137-i8mbl1sgmcfkb5vn-svn3-upgrade


Modified: branches/4.0-regwrite/source/lib/registry/hive.h
===================================================================
--- branches/4.0-regwrite/source/lib/registry/hive.h	2007-08-04 18:15:47 UTC (rev 24215)
+++ branches/4.0-regwrite/source/lib/registry/hive.h	2007-08-04 18:15:53 UTC (rev 24216)
@@ -167,6 +167,10 @@
 
 WERROR reg_create_directory(TALLOC_CTX *parent_ctx, 
 			const char *location, struct hive_key **key);
+WERROR reg_create_regf_file(TALLOC_CTX *parent_ctx, 
+							 const char *location, 
+							 int major_version, 
+							 struct hive_key **key);
 
 
 #endif /* __REGISTRY_HIVE_H__ */

Modified: branches/4.0-regwrite/source/lib/registry/regf.c
===================================================================
--- branches/4.0-regwrite/source/lib/registry/regf.c	2007-08-04 18:15:47 UTC (rev 24215)
+++ branches/4.0-regwrite/source/lib/registry/regf.c	2007-08-04 18:15:53 UTC (rev 24216)
@@ -26,6 +26,8 @@
 #include "librpc/gen_ndr/ndr_security.h"
 #include "librpc/gen_ndr/winreg.h"
 
+static struct hive_operations reg_backend_regf;
+
 /**
  * There are several places on the web where the REGF format is explained; 
  *
@@ -127,7 +129,7 @@
 	return ret;
 }
 
-static BOOL hbin_get_tdr (struct regf_data *regf, uint32_t offset, 
+static bool hbin_get_tdr (struct regf_data *regf, uint32_t offset, 
 						  TALLOC_CTX *ctx, tdr_pull_fn_t pull_fn, void *p)
 {
 	struct tdr_pull pull;
@@ -137,15 +139,15 @@
 	pull.data = hbin_get(regf, offset);
 	if (!pull.data.data) {
 		DEBUG(1, ("Unable to get data at 0x%04x\n", offset));
-		return False;
+		return false;
 	}
 	
 	if (NT_STATUS_IS_ERR(pull_fn(&pull, ctx, p))) {
 		DEBUG(1, ("Error parsing record at 0x%04x using tdr\n", offset));
-		return False;
+		return false;
 	}
 
-	return True;
+	return true;
 }
 
 /* Allocate some new data */
@@ -306,7 +308,8 @@
 	SIVALS(hbin->data, rel_offset, size);
 }
 
-/* Store a data blob data was already stored, but has changed in size
+/**
+ * Store a data blob data was already stored, but has changed in size
  * Will try to save it at the current location if possible, otherwise 
  * does a free + store */
 static uint32_t hbin_store_resize (struct regf_data *data, uint32_t orig_offset, DATA_BLOB blob)
@@ -370,7 +373,8 @@
 	return hbin_store(data, blob);
 }
 
-static uint32_t hbin_store_tdr_resize (struct regf_data *regf, tdr_push_fn_t push_fn, uint32_t orig_offset, void *p)
+static uint32_t hbin_store_tdr_resize (struct regf_data *regf, tdr_push_fn_t push_fn, 
+									   uint32_t orig_offset, void *p)
 {
 	struct tdr_push *push = talloc_zero(regf, struct tdr_push);
 	uint32_t ret;
@@ -387,7 +391,8 @@
 	return ret;
 }
 
-static uint32_t regf_create_lh_hash(const char *name) {
+static uint32_t regf_create_lh_hash(const char *name) 
+{
 	char *hash_name;
 	uint32_t ret = 0;
 	uint16_t i;
@@ -411,17 +416,22 @@
 	const struct regf_key_data *private_data = 
 		(const struct regf_key_data *)key;
 
-	*num_subkeys = private_data->nk->num_subkeys;
-	*num_values = private_data->nk->num_values;
+	if (num_subkeys != NULL)
+		*num_subkeys = private_data->nk->num_subkeys;
 
-	if (private_data->nk->clsname_offset != -1) {
-		DATA_BLOB data = hbin_get(private_data->hive, 
-								  private_data->nk->clsname_offset);
-		*classname = talloc_strndup(mem_ctx, 
-						 (char*)data.data, private_data->nk->clsname_length);
-	} else 
-		*classname = NULL;
+	if (num_values != NULL)
+		*num_values = private_data->nk->num_values;
 
+	if (classname != NULL) {
+		if (private_data->nk->clsname_offset != -1) {
+			DATA_BLOB data = hbin_get(private_data->hive, 
+									  private_data->nk->clsname_offset);
+			*classname = talloc_strndup(mem_ctx, 
+							 (char*)data.data, private_data->nk->clsname_length);
+		} else 
+			*classname = NULL;
+	}
+
 	/* FIXME: Last mod time */
 	
 	return WERR_OK;
@@ -435,6 +445,7 @@
 	struct regf_key_data *ret;
 
 	ret = talloc_zero(ctx, struct regf_key_data);
+	ret->key.ops = &reg_backend_regf;
 	ret->hive = talloc_reference(ret, regf);
 	ret->offset = offset;
 	nk = talloc(ret, struct nk_block);
@@ -656,7 +667,8 @@
 				break;
 			} else {
 				DEBUG(0,("Unknown sublist in ri block\n"));
-				SMB_ASSERT(0);
+
+				return WERR_GENERAL_FAILURE;
 			}
 			
 		}
@@ -769,7 +781,7 @@
 				break;
 		}
 		if (key_off == 0)
-			return WERR_DEST_NOT_FOUND;
+			return WERR_NOT_FOUND;
 	} else if (!strncmp((char *)data.data, "lf", 2)) {
 		struct lf_block lf;
 		struct tdr_pull pull;
@@ -799,7 +811,7 @@
 				break;
 		}
 		if (key_off == 0)
-			return WERR_DEST_NOT_FOUND;
+			return WERR_NOT_FOUND;
 	} else if (!strncmp((char *)data.data, "lh", 2)) {
 		struct lh_block lh;
 		struct tdr_pull pull;
@@ -831,7 +843,7 @@
 				break;
 		}	
 		if (key_off == 0)
-			return WERR_DEST_NOT_FOUND;
+			return WERR_NOT_FOUND;
 	} else if (!strncmp((char *)data.data, "ri", 2)) {
 		struct ri_block ri;
 		struct tdr_pull pull;
@@ -900,7 +912,7 @@
 				break;
 		}
 		if (!key_off)
-			return WERR_DEST_NOT_FOUND;
+			return WERR_NOT_FOUND;
 	} else {
 		DEBUG(0, ("Unknown subkey list type.\n"));
 		return WERR_GENERAL_FAILURE;
@@ -920,7 +932,7 @@
 	struct nk_block root;
 	DATA_BLOB data;
 	uint32_t sk_offset, cur_sk_offset;
-	BOOL update_cur_sk = false;
+	bool update_cur_sk = false;
 
 	/* Get the root nk */
  	hbin_get_tdr(regf, regf->header->data_offset, regf, 
@@ -1214,7 +1226,7 @@
 		struct li_block li;
 		struct tdr_pull pull;
 		uint16_t i;
-		BOOL found_offset = false;
+		bool found_offset = false;
 	
 		DEBUG(10, ("Subkeys in LI list\n"));
 		
@@ -1255,7 +1267,7 @@
 		struct lf_block lf;
 		struct tdr_pull pull;
 		uint16_t i;
-		BOOL found_offset = false;
+		bool found_offset = false;
 		
 		DEBUG(10, ("Subkeys in LF list\n"));
 		
@@ -1298,7 +1310,7 @@
 		struct lh_block lh;
 		struct tdr_pull pull;
 		uint16_t i;
-		BOOL found_offset = false;
+		bool found_offset = false;
 		
 		DEBUG(10, ("Subkeys in LH list\n"));
 		
@@ -1356,7 +1368,7 @@
 	struct nk_block *nk = private_data->nk;
 	struct vk_block vk;
 	uint32_t vk_offset;
-	BOOL found_offset = false;
+	bool found_offset = false;
 	DATA_BLOB values;
 	uint32_t i;
 
@@ -1415,15 +1427,15 @@
 	parent_nk = private_data->nk;
 
 	if (parent_nk->subkeys_offset == -1) {
-		DEBUG(0, ("Subkey list is empty, this key cannot contain subkeys.\n"));
-		return WERR_DEST_NOT_FOUND;
+		DEBUG(4, ("Subkey list is empty, this key cannot contain subkeys.\n"));
+		return WERR_NOT_FOUND;
 	}
 
 	/* Find the key */
 	if (!W_ERROR_IS_OK(regf_get_subkey_by_name(parent_nk, parent, name, 
 									   (struct hive_key **)&key))) {
 		DEBUG(0, ("Key '%s' not found\n", name));
-		return WERR_DEST_NOT_FOUND;
+		return WERR_NOT_FOUND;
 	}
 	
 	if (key->nk->subkeys_offset != -1 || 
@@ -1483,7 +1495,6 @@
 	nk.clsname_length = 0;
 	nk.key_name = name;
 	
-
 	/* Get the security descriptor of the root key */
  	root = talloc_zero(ctx, struct nk_block);
 	if (!hbin_get_tdr(regf, regf->header->data_offset, root, (tdr_pull_fn_t)tdr_pull_nk_block, root)) {
@@ -1645,6 +1656,86 @@
 	return WERR_OK;
 }
 
+WERROR reg_create_regf_file(TALLOC_CTX *parent_ctx, 
+							 const char *location, 
+							 int minor_version,
+							 struct hive_key **key)
+{
+	struct regf_data *regf;
+	struct regf_hdr *regf_hdr;
+	struct tdr_pull pull;
+	int i;
+	struct nk_block nk;
+	WERROR error;
+
+	regf = (struct regf_data *)talloc_zero(NULL, struct regf_data);
+
+	DEBUG(5, ("Attempting to create registry file\n"));
+
+	/* Get the header */
+	regf->fd = creat(location, 0644);
+
+	if (regf->fd == -1) {
+		DEBUG(0,("Could not create file: %s, %s\n", location,
+				 strerror(errno)));
+		talloc_free(regf);
+		return WERR_GENERAL_FAILURE;
+	}
+
+	regf_hdr = talloc_zero(regf, struct regf_hdr);
+	regf_hdr->REGF_ID = "regf";
+	unix_to_nt_time(&regf_hdr->modtime, time(NULL));
+	regf_hdr->version.major = 1;
+	regf_hdr->version.minor = minor_version;
+	regf_hdr->last_block = 0x1000; /* Block size */
+	regf_hdr->description = talloc_strdup(regf_hdr, "registry created by Samba 4");
+	regf_hdr->chksum = 0;
+
+	regf->header = regf_hdr;
+
+	pull.offset = 0x1000;
+
+	i = 0;
+	/* Read in all hbin blocks */
+	regf->hbins = talloc_array(regf, struct hbin_block *, 1);
+	regf->hbins[0] = NULL;
+
+	regf_hdr->data_offset = -1; /* FIXME */
+
+	nk.header = "nk";
+	nk.type = REG_SUB_KEY;
+	unix_to_nt_time(&nk.last_change, time(NULL));
+	nk.uk1 = 0;
+	nk.parent_offset = -1;
+	nk.num_subkeys = 0;
+	nk.uk2 = 0;
+	nk.subkeys_offset = -1;
+	nk.unknown_offset = -1;
+	nk.num_values = 0;
+	nk.values_offset = -1;
+	memset(nk.unk3, 0, 5);
+	nk.clsname_offset = -1; /* FIXME: fill in */
+	nk.clsname_length = 0;
+	nk.key_name = "";
+	
+	nk.sk_offset = -1; /* FIXME: fill in */
+	
+	/* Store the new nk key */
+	regf->header->data_offset = hbin_store_tdr(regf, (tdr_push_fn_t) tdr_push_nk_block, &nk);
+	
+	*key = (struct hive_key *)regf_get_key(parent_ctx, regf, regf->header->data_offset);
+
+	/* We can drop our own reference now that *key will have created one */
+	talloc_free(regf);
+
+	error = regf_save_hbin(regf);
+	if (!W_ERROR_IS_OK(error)) {
+		return error;
+	}
+
+	return WERR_OK;
+}
+
 WERROR reg_open_regf_file(TALLOC_CTX *parent_ctx, 
 						  const char *location, struct hive_key **key)
 {
@@ -1691,11 +1782,6 @@
 		return WERR_GENERAL_FAILURE;
 	}
 
-	DEBUG(1, ("Registry '%s' read. Version %d.%d.%d.%d\n", 
-			  regf_hdr->description, regf_hdr->version.major,
-			  regf_hdr->version.minor, regf_hdr->version.release,
-			  regf_hdr->version.build));
-
 	/*
 	 * Validate the header ...
 	 */

Modified: branches/4.0-regwrite/source/lib/registry/tests/hive.c
===================================================================
--- branches/4.0-regwrite/source/lib/registry/tests/hive.c	2007-08-04 18:15:47 UTC (rev 24215)
+++ branches/4.0-regwrite/source/lib/registry/tests/hive.c	2007-08-04 18:15:53 UTC (rev 24216)
@@ -119,7 +119,22 @@
 	*data = key;
 
 	return true;
+}
 
+static bool hive_setup_regf(struct torture_context *tctx, void **data)
+{
+	struct hive_key *key;
+	WERROR error;
+
+	error = reg_create_regf_file(tctx, "bla-regf", 5, &key);
+	if (!W_ERROR_IS_OK(error)) {
+		fprintf(stderr, "Unable to create new regf file\n");
+		return false;
+	}
+
+	*data = key;
+
+	return true;
 }
 
 static bool test_dir_refuses_null_location(struct torture_context *tctx)
@@ -147,5 +162,10 @@
 	tcase = torture_suite_add_tcase(suite, "ldb");
 	torture_tcase_set_fixture(tcase, hive_setup_ldb, NULL);
 	tcase_add_tests(tcase);
+
+	tcase = torture_suite_add_tcase(suite, "regf");
+	torture_tcase_set_fixture(tcase, hive_setup_regf, NULL);
+	tcase_add_tests(tcase);
+
 	return suite;
 }



More information about the samba-cvs mailing list