From 0b62cdbed0867d0712821953700062727f668c65 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 23 Feb 2009 15:03:29 -0800 Subject: Quieten down a boatload of shadowed variable warnings on Solaris. Makes real problems easier to spot. Jeremy. --- source3/registry/reg_dispatcher.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'source3/registry/reg_dispatcher.c') diff --git a/source3/registry/reg_dispatcher.c b/source3/registry/reg_dispatcher.c index 7d950c3c4e..c160622054 100644 --- a/source3/registry/reg_dispatcher.c +++ b/source3/registry/reg_dispatcher.c @@ -39,7 +39,7 @@ static WERROR construct_registry_sd(TALLOC_CTX *ctx, SEC_DESC **psd) SEC_ACE ace[3]; size_t i = 0; SEC_DESC *sd; - SEC_ACL *acl; + SEC_ACL *theacl; size_t sd_size; /* basic access for Everyone */ @@ -59,14 +59,14 @@ static WERROR construct_registry_sd(TALLOC_CTX *ctx, SEC_DESC **psd) /* create the security descriptor */ - acl = make_sec_acl(ctx, NT4_ACL_REVISION, i, ace); - if (acl == NULL) { + theacl = make_sec_acl(ctx, NT4_ACL_REVISION, i, ace); + if (theacl == NULL) { return WERR_NOMEM; } sd = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE, &global_sid_Builtin_Administrators, - &global_sid_System, NULL, acl, + &global_sid_System, NULL, theacl, &sd_size); if (sd == NULL) { return WERR_NOMEM; -- cgit From 58fc61217db68e553119bc49369362672590c19d Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Tue, 24 Feb 2009 15:19:18 +0100 Subject: s3:registry: replace typedef "REGSUBKEY_CTR" by "struct regsubkey_ctr" This paves the way for hiding the typedef and the implementation from the surface. Michael --- source3/registry/reg_dispatcher.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source3/registry/reg_dispatcher.c') diff --git a/source3/registry/reg_dispatcher.c b/source3/registry/reg_dispatcher.c index c160622054..0db9e1b146 100644 --- a/source3/registry/reg_dispatcher.c +++ b/source3/registry/reg_dispatcher.c @@ -80,7 +80,7 @@ static WERROR construct_registry_sd(TALLOC_CTX *ctx, SEC_DESC **psd) High level wrapper function for storing registry subkeys ***********************************************************************/ -bool store_reg_keys( REGISTRY_KEY *key, REGSUBKEY_CTR *subkeys ) +bool store_reg_keys( REGISTRY_KEY *key, struct regsubkey_ctr *subkeys ) { if (key->ops && key->ops->store_subkeys) return key->ops->store_subkeys(key->name, subkeys); @@ -105,7 +105,7 @@ bool store_reg_values( REGISTRY_KEY *key, REGVAL_CTR *val ) Initialize the TALLOC_CTX if necessary ***********************************************************************/ -int fetch_reg_keys( REGISTRY_KEY *key, REGSUBKEY_CTR *subkey_ctr ) +int fetch_reg_keys( REGISTRY_KEY *key, struct regsubkey_ctr *subkey_ctr ) { int result = -1; @@ -216,7 +216,7 @@ WERROR regkey_set_secdesc(REGISTRY_KEY *key, * Check whether the in-memory version of the subkyes of a * registry key needs update from disk. */ -bool reg_subkeys_need_update(REGISTRY_KEY *key, REGSUBKEY_CTR *subkeys) +bool reg_subkeys_need_update(REGISTRY_KEY *key, struct regsubkey_ctr *subkeys) { if (key->ops && key->ops->subkeys_need_update) { -- cgit From 602bfeb3605767c2d938f547ddebe5693776028c Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Wed, 25 Feb 2009 21:59:54 +0100 Subject: s3:registry: add a create_subkey method to the backend ops. This is to provide a more atomic means of adding a subkey of a key. Michael --- source3/registry/reg_dispatcher.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'source3/registry/reg_dispatcher.c') diff --git a/source3/registry/reg_dispatcher.c b/source3/registry/reg_dispatcher.c index 0db9e1b146..555e821bf1 100644 --- a/source3/registry/reg_dispatcher.c +++ b/source3/registry/reg_dispatcher.c @@ -100,6 +100,15 @@ bool store_reg_values( REGISTRY_KEY *key, REGVAL_CTR *val ) return false; } +WERROR create_reg_subkey(REGISTRY_KEY *key, const char *subkey) +{ + if (key->ops && key->ops->create_subkey) { + return key->ops->create_subkey(key->name, subkey); + } + + return WERR_NOT_SUPPORTED; +} + /*********************************************************************** High level wrapper function for enumerating registry subkeys Initialize the TALLOC_CTX if necessary -- cgit From 97508eefb78598fcf15c07b4c0cb92dbf21c30f7 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Thu, 26 Feb 2009 02:54:50 +0100 Subject: s3:registry: add a delete_subkey method to the backend ops. This is to provide a more atomic means of deleting a subkey of a key. Michael --- source3/registry/reg_dispatcher.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'source3/registry/reg_dispatcher.c') diff --git a/source3/registry/reg_dispatcher.c b/source3/registry/reg_dispatcher.c index 555e821bf1..106d38e9a5 100644 --- a/source3/registry/reg_dispatcher.c +++ b/source3/registry/reg_dispatcher.c @@ -109,6 +109,15 @@ WERROR create_reg_subkey(REGISTRY_KEY *key, const char *subkey) return WERR_NOT_SUPPORTED; } +WERROR delete_reg_subkey(REGISTRY_KEY *key, const char *subkey) +{ + if (key->ops && key->ops->delete_subkey) { + return key->ops->delete_subkey(key->name, subkey); + } + + return WERR_NOT_SUPPORTED; +} + /*********************************************************************** High level wrapper function for enumerating registry subkeys Initialize the TALLOC_CTX if necessary -- cgit From 62db0ea0cfe215b83f7ec94b77f10ef49175c7ae Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Fri, 27 Feb 2009 11:18:35 +0100 Subject: Use talloc_tos() in regkey_access_check() --- source3/registry/reg_dispatcher.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) (limited to 'source3/registry/reg_dispatcher.c') diff --git a/source3/registry/reg_dispatcher.c b/source3/registry/reg_dispatcher.c index 106d38e9a5..f8c382536f 100644 --- a/source3/registry/reg_dispatcher.c +++ b/source3/registry/reg_dispatcher.c @@ -161,7 +161,6 @@ bool regkey_access_check( REGISTRY_KEY *key, uint32 requested, uint32 *granted, SEC_DESC *sec_desc; NTSTATUS status; WERROR err; - TALLOC_CTX *mem_ctx; /* use the default security check if the backend has not defined its * own */ @@ -171,30 +170,20 @@ bool regkey_access_check( REGISTRY_KEY *key, uint32 requested, uint32 *granted, granted, token); } - /* - * The secdesc routines can't yet cope with a NULL talloc ctx sanely. - */ - - if (!(mem_ctx = talloc_init("regkey_access_check"))) { - return false; - } - - err = regkey_get_secdesc(mem_ctx, key, &sec_desc); + err = regkey_get_secdesc(talloc_tos(), key, &sec_desc); if (!W_ERROR_IS_OK(err)) { - TALLOC_FREE(mem_ctx); return false; } se_map_generic( &requested, ®_generic_map ); status =se_access_check(sec_desc, token, requested, granted); + TALLOC_FREE(sec_desc); if (!NT_STATUS_IS_OK(status)) { - TALLOC_FREE(mem_ctx); return false; } - TALLOC_FREE(mem_ctx); return NT_STATUS_IS_OK(status); } -- cgit