summaryrefslogtreecommitdiff
path: root/source3/utils
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2007-06-14 11:29:35 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:23:21 -0500
commit6090601c8b6abde1642906351d1dd9bb41e576b6 (patch)
treef610144465f0c402b7ee2f56e2319d0bf41697d7 /source3/utils
parent0b86e4030604bfbaca66df9f699a68bbf6db0824 (diff)
downloadsamba-6090601c8b6abde1642906351d1dd9bb41e576b6.tar.gz
samba-6090601c8b6abde1642906351d1dd9bb41e576b6.tar.bz2
samba-6090601c8b6abde1642906351d1dd9bb41e576b6.zip
r23485: This checkin consists mostly of refactorings in preparation of the
activation of global registry options in loadparm.c, mainly to extract functionality from net_conf.c to be made availabel elsewhere and to minimize linker dependencies. In detail: * move functions registry_push/pull_value from lib/util_reg.c to new file lib/util_reg_api.c * create a fake user token consisting of builtin administrators sid and se_disk_operators privilege by hand instead of using get_root_nt_token() to minimize linker deps for bin/net. + new function registry_create_admin_token() in new lib/util_reg_smbconf.c + move dup_nt_token from auth/token_util.c to new file lib/util_nttoken.c + adapt net_conf.c and Makefile.in accordingly. * split lib/profiles.c into two parts: new file lib/profiles_basic.c takes all the low level mask manipulation and format conversion functions (se_priv, privset, luid). the privs array is completely hidden from profiles.c by adding some access-functions. some mask-functions are not static anymore. Generally, SID- and LUID-related stuff that has more dependencies is kept in lib/profiles.c * Move initialization of regdb from net_conf.c into a function registry_init_regdb() in lib/util_reg_smbconf.c. Michael (This used to be commit efd3e2bfb756ac5c4df7984791c67e7ae20a582e)
Diffstat (limited to 'source3/utils')
-rw-r--r--source3/utils/net_conf.c29
1 files changed, 11 insertions, 18 deletions
diff --git a/source3/utils/net_conf.c b/source3/utils/net_conf.c
index 7d8849a99a..605ad3fdd2 100644
--- a/source3/utils/net_conf.c
+++ b/source3/utils/net_conf.c
@@ -38,8 +38,6 @@
#include "includes.h"
#include "utils/net.h"
-extern REGISTRY_OPS smbconf_reg_ops;
-
/*
* usage functions
*/
@@ -138,7 +136,7 @@ static char *format_value(TALLOC_CTX *mem_ctx, struct registry_value *value)
}
break;
}
- case REG_BINARY:
+ case REG_BINARY:
result = talloc_asprintf(mem_ctx, "binary (%d bytes)",
(int)value->v.binary.length);
break;
@@ -198,6 +196,12 @@ static WERROR smbconf_open_path_q(TALLOC_CTX *ctx, const char *subkeyname,
{
WERROR werr = WERR_OK;
char *path = NULL;
+ NT_USER_TOKEN *token;
+
+ if (!(token = registry_create_admin_token(ctx))) {
+ DEBUG(1, ("Error creating admin token\n"));
+ goto done;
+ }
if (subkeyname == NULL) {
path = talloc_strdup(ctx, KEY_SMBCONF);
@@ -207,8 +211,9 @@ static WERROR smbconf_open_path_q(TALLOC_CTX *ctx, const char *subkeyname,
}
werr = reg_open_path(ctx, path, desired_access,
- get_root_nt_token(), key);
+ token, key);
+done:
TALLOC_FREE(path);
return werr;
}
@@ -1068,7 +1073,6 @@ done:
int net_conf(int argc, const char **argv)
{
int ret = -1;
- int saved_errno = 0;
struct functable2 func[] = {
{"list", net_conf_list,
"Dump the complete configuration in smb.conf like format."},
@@ -1091,21 +1095,10 @@ int net_conf(int argc, const char **argv)
{NULL, NULL, NULL}
};
- REGISTRY_HOOK smbconf_reg_hook = {KEY_SMBCONF, &smbconf_reg_ops};
-
- if (!regdb_init()) {
- saved_errno = errno;
- d_fprintf(stderr, "Can't open the registry");
- if (saved_errno) {
- d_fprintf(stderr, ": %s\n", strerror(saved_errno));
- }
- else {
- d_fprintf(stderr, "!\n");
- }
+ if (!registry_init_regdb()) {
+ d_fprintf(stderr, "Error initializing the registry!\n");
goto done;
}
- reghook_cache_init();
- reghook_cache_add(&smbconf_reg_hook);
ret = net_run_function2(argc, argv, "net conf", func);