svn commit: samba r24219 - in branches/4.0-regwrite: .
source/lib/registry source/lib/registry/tests source/torture/local
jelmer at samba.org
jelmer at samba.org
Sat Aug 4 18:16:29 GMT 2007
Author: jelmer
Date: 2007-08-04 18:16:25 +0000 (Sat, 04 Aug 2007)
New Revision: 24219
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=24219
Log:
Start working on global registry backend tests.
Added:
branches/4.0-regwrite/source/lib/registry/tests/registry.c
Modified:
branches/4.0-regwrite/
branches/4.0-regwrite/source/lib/registry/hive.c
branches/4.0-regwrite/source/lib/registry/hive.h
branches/4.0-regwrite/source/lib/registry/interface.c
branches/4.0-regwrite/source/lib/registry/local.c
branches/4.0-regwrite/source/lib/registry/registry.h
branches/4.0-regwrite/source/torture/local/config.mk
Changeset:
Property changes on: branches/4.0-regwrite
___________________________________________________________________
Name: bzr:revision-info
- timestamp: Wed 2007-06-13 02:13:44.184000015 +0200
committer: Jelmer Vernooij <jelmer at samba.org>
properties:
branch-nick: 4.0-regwrite
rebase-of: jelmer at samba.org-20070613001344-qkqechdlu867mozv
+ timestamp: Wed 2007-06-13 22:53:58.466000080 +0200
committer: Jelmer Vernooij <jelmer at samba.org>
properties:
branch-nick: 4.0-regwrite
rebase-of: jelmer at samba.org-20070613205358-bw2nnemz6ringkd0
Name: bzr:file-ids
-
+ source/lib/registry/tests/registry.c registry.c-20070613193046-9w6vxztx0uea8a0p-1
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
11189 jelmer at samba.org-20070612231137-i8mbl1sgmcfkb5vn-svn3-upgrade
11190 jelmer at samba.org-20070612234637-779h4pffu0ybx829-svn3-upgrade
11191 jelmer at samba.org-20070613001344-qkqechdlu867mozv-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
11190 jelmer at samba.org-20070612234637-779h4pffu0ybx829-svn3-upgrade
11191 jelmer at samba.org-20070613001344-qkqechdlu867mozv-svn3-upgrade
11192 jelmer at samba.org-20070613205358-bw2nnemz6ringkd0-svn3-upgrade
Modified: branches/4.0-regwrite/source/lib/registry/hive.c
===================================================================
--- branches/4.0-regwrite/source/lib/registry/hive.c 2007-08-04 18:16:18 UTC (rev 24218)
+++ branches/4.0-regwrite/source/lib/registry/hive.c 2007-08-04 18:16:25 UTC (rev 24219)
@@ -78,3 +78,11 @@
{
return key->ops->del_key(key, name);
}
+
+_PUBLIC_ WERROR hive_get_key_by_name(TALLOC_CTX *mem_ctx,
+ const struct hive_key *key, const char *name,
+ struct hive_key **subkey)
+{
+ return key->ops->get_key_by_name(mem_ctx, key, name,
+ subkey);
+}
Modified: branches/4.0-regwrite/source/lib/registry/hive.h
===================================================================
--- branches/4.0-regwrite/source/lib/registry/hive.h 2007-08-04 18:16:18 UTC (rev 24218)
+++ branches/4.0-regwrite/source/lib/registry/hive.h 2007-08-04 18:16:25 UTC (rev 24219)
@@ -150,6 +150,9 @@
const char *name, const char *classname, struct security_descriptor *desc,
struct hive_key **key);
_PUBLIC_ WERROR hive_key_del(const struct hive_key *key, const char *name);
+_PUBLIC_ WERROR hive_get_key_by_name(TALLOC_CTX *mem_ctx,
+ const struct hive_key *key, const char *name,
+ struct hive_key **subkey);
/* Individual backends */
Modified: branches/4.0-regwrite/source/lib/registry/interface.c
===================================================================
--- branches/4.0-regwrite/source/lib/registry/interface.c 2007-08-04 18:16:18 UTC (rev 24218)
+++ branches/4.0-regwrite/source/lib/registry/interface.c 2007-08-04 18:16:25 UTC (rev 24219)
@@ -63,7 +63,8 @@
{
int i;
for (i = 0; reg_predefined_keys[i].name; i++) {
- if (reg_predefined_keys[i].handle == hkey) return reg_predefined_keys[i].name;
+ if (reg_predefined_keys[i].handle == hkey)
+ return reg_predefined_keys[i].name;
}
return NULL;
@@ -84,7 +85,7 @@
}
/** Get predefined key by id. */
-_PUBLIC_ WERROR reg_get_predefined_key(struct registry_context *ctx,
+_PUBLIC_ WERROR reg_get_predefined_key(const struct registry_context *ctx,
uint32_t hkey, struct registry_key **key)
{
return ctx->ops->get_predefined_key(ctx, hkey, key);
Modified: branches/4.0-regwrite/source/lib/registry/local.c
===================================================================
--- branches/4.0-regwrite/source/lib/registry/local.c 2007-08-04 18:16:18 UTC (rev 24218)
+++ branches/4.0-regwrite/source/lib/registry/local.c 2007-08-04 18:16:25 UTC (rev 24219)
@@ -37,12 +37,15 @@
struct hive_key *key;
struct mountpoint *prev, *next;
} *mountpoints;
+
+ struct auth_session_info *session_info;
+ struct cli_credentials *credentials;
};
struct local_key {
struct registry_key global;
struct reg_key_path path;
- struct hive_key hive;
+ struct hive_key *hive_key;
};
WERROR reg_mount_hive(struct registry_context *ctx, struct reg_key_path *path,
@@ -57,13 +60,27 @@
char *orig = strdup(path),
*curbegin = orig,
*curend = strchr(path, '\\');
- struct registry_key *curkey = parent;
+ struct local_key *local_parent = talloc_get_type(parent, struct local_key),
+ *local_key;
+ struct hive_key *curkey = local_parent->hive_key;
WERROR error;
+ const char **elements = NULL;
+ int el;
- while (curbegin && *curbegin) {
+ elements = talloc_array(mem_ctx, const char *,
+ str_list_length(local_parent->path.elements) + 1);
+ for (el = 0; local_parent->path.elements[el]; el++) {
+ elements[el] = local_parent->path.elements[el];
+ }
+ elements[el] = NULL;
+
+ while (curbegin != NULL && *curbegin) {
if (curend != NULL)
*curend = '\0';
- error = reg_open_key(mem_ctx, curkey, curbegin, &curkey);
+ elements = talloc_realloc(mem_ctx, elements, const char *, el+2);
+ elements[el] = talloc_strdup(elements, curbegin);
+ el++;
+ error = hive_get_key_by_name(mem_ctx, curkey, curbegin, &curkey);
if (!W_ERROR_IS_OK(error)) {
SAFE_FREE(orig);
return error;
@@ -75,14 +92,48 @@
}
SAFE_FREE(orig);
- *result = curkey;
-
+ local_key->global.context = talloc_reference(local_key,
+ local_parent->global.context);
+ local_key->hive_key = curkey;
+ local_key->path.predefined_key = local_parent->path.predefined_key;
+ local_key->path.elements = talloc_steal(local_key, elements);
+
+ *result = (struct registry_key *)local_key;
+
return WERR_OK;
}
+WERROR local_get_predefined_key (struct registry_context *ctx,
+ uint32_t key_id, struct registry_key **key)
+{
+ struct registry_local *rctx = talloc_get_type(ctx, struct registry_local);
+ struct local_key *local_key;
+ struct mountpoint *mp;
+
+ for (mp = rctx->mountpoints; mp != NULL; mp = mp->next) {
+ if (mp->path.predefined_key == key_id &&
+ mp->path.elements == NULL)
+ break;
+ }
+
+ if (mp == NULL)
+ return WERR_NOT_FOUND;
+
+ local_key = talloc(ctx, struct local_key);
+ local_key->hive_key = mp->key;
+ local_key->global.context = ctx;
+ local_key->path = mp->path;
+
+ *key = (struct registry_key *)local_key;
+
+ return WERR_OK;
+}
+
+
const static struct registry_operations local_ops = {
.name = "local",
- .open_key = local_open_key
+ .open_key = local_open_key,
+ .get_predefined_key = local_get_predefined_key,
};
WERROR reg_open_local(TALLOC_CTX *mem_ctx, struct registry_context **ctx,
@@ -94,6 +145,8 @@
W_ERROR_HAVE_NO_MEMORY(ret);
ret->registry.ops = &local_ops;
+ ret->session_info = session_info;
+ ret->credentials = credentials;
*ctx = (struct registry_context *)ret;
Modified: branches/4.0-regwrite/source/lib/registry/registry.h
===================================================================
--- branches/4.0-regwrite/source/lib/registry/registry.h 2007-08-04 18:16:18 UTC (rev 24218)
+++ branches/4.0-regwrite/source/lib/registry/registry.h 2007-08-04 18:16:25 UTC (rev 24219)
@@ -94,7 +94,7 @@
WERROR (*flush_key) (struct registry_key *key);
- WERROR (*get_predefined_key) (struct registry_context *ctx,
+ WERROR (*get_predefined_key) (const struct registry_context *ctx,
uint32_t key_id,
struct registry_key **key);
@@ -198,7 +198,7 @@
_PUBLIC_ WERROR reg_get_predefined_key_by_name(struct registry_context *ctx,
const char *name,
struct registry_key **key);
-_PUBLIC_ WERROR reg_get_predefined_key(struct registry_context *ctx,
+_PUBLIC_ WERROR reg_get_predefined_key(const struct registry_context *ctx,
uint32_t hkey,
struct registry_key **key);
Added: branches/4.0-regwrite/source/lib/registry/tests/registry.c
===================================================================
--- branches/4.0-regwrite/source/lib/registry/tests/registry.c 2007-08-04 18:16:18 UTC (rev 24218)
+++ branches/4.0-regwrite/source/lib/registry/tests/registry.c 2007-08-04 18:16:25 UTC (rev 24219)
@@ -0,0 +1,75 @@
+/*
+ Unix SMB/CIFS implementation.
+
+ local testing of registry library - registry backend
+
+ Copyright (C) Jelmer Vernooij 2005-2007
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+#include "lib/registry/registry.h"
+#include "lib/cmdline/popt_common.h"
+#include "torture/torture.h"
+#include "librpc/gen_ndr/winreg.h"
+#include "system/filesys.h"
+
+static bool test_get_predefined(struct torture_context *tctx,
+ const void *_data)
+{
+ const struct registry_context *rctx = _data;
+ struct registry_key *root;
+ WERROR error;
+
+ error = reg_get_predefined_key(rctx, HKEY_CLASSES_ROOT, &root);
+ torture_assert_werr_ok(tctx, error,
+ "getting predefined key failed");
+ return true;
+}
+
+static bool setup_local_registry(struct torture_context *tctx,
+ void **data)
+{
+ struct registry_context *rctx;
+ WERROR error;
+
+ error = reg_open_local(tctx, &rctx, NULL, NULL);
+ if (!W_ERROR_IS_OK(error)) {
+ return false;
+ }
+
+ /* FIXME */
+ return true;
+}
+
+static void tcase_add_tests(struct torture_tcase *tcase)
+{
+ torture_tcase_add_simple_test(tcase, "get_predefined_key",
+ test_get_predefined);
+}
+
+struct torture_suite *torture_registry_registry(TALLOC_CTX *mem_ctx)
+{
+ struct torture_tcase *tcase;
+ struct torture_suite *suite = torture_suite_create(mem_ctx,
+ "REGISTRY");
+
+ tcase = torture_suite_add_tcase(suite, "local");
+ torture_tcase_set_fixture(tcase, setup_local_registry, NULL);
+ tcase_add_tests(tcase);
+
+ return suite;
+}
Modified: branches/4.0-regwrite/source/torture/local/config.mk
===================================================================
--- branches/4.0-regwrite/source/torture/local/config.mk 2007-08-04 18:16:18 UTC (rev 24218)
+++ branches/4.0-regwrite/source/torture/local/config.mk 2007-08-04 18:16:25 UTC (rev 24219)
@@ -24,6 +24,7 @@
irpc.o \
../../lib/registry/tests/generic.o \
../../lib/registry/tests/hive.o \
+ ../../lib/registry/tests/registry.o \
resolve.o \
../../lib/util/tests/strlist.o \
../../lib/util/tests/file.o \
More information about the samba-cvs
mailing list