summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/lib/util_reg_smbconf.c13
-rw-r--r--source3/libnet/libnet_conf.c8
-rw-r--r--source3/param/loadparm.c7
3 files changed, 18 insertions, 10 deletions
diff --git a/source3/lib/util_reg_smbconf.c b/source3/lib/util_reg_smbconf.c
index 5fb862ac35..6452b0b15b 100644
--- a/source3/lib/util_reg_smbconf.c
+++ b/source3/lib/util_reg_smbconf.c
@@ -31,14 +31,20 @@ extern REGISTRY_OPS smbconf_reg_ops;
* - builtin administrators sid
* - disk operators privilege
*/
-NT_USER_TOKEN *registry_create_admin_token(TALLOC_CTX *mem_ctx)
+NTSTATUS registry_create_admin_token(TALLOC_CTX *mem_ctx,
+ NT_USER_TOKEN **ptoken)
{
NTSTATUS status;
NT_USER_TOKEN *token = NULL;
+ if (ptoken == NULL) {
+ return NT_STATUS_INVALID_PARAMETER;
+ }
+
token = TALLOC_ZERO_P(mem_ctx, NT_USER_TOKEN);
if (token == NULL) {
DEBUG(1, ("talloc failed\n"));
+ status = NT_STATUS_NO_MEMORY;
goto done;
}
token->privileges = se_disk_operators;
@@ -49,8 +55,11 @@ NT_USER_TOKEN *registry_create_admin_token(TALLOC_CTX *mem_ctx)
"to fake token.\n"));
goto done;
}
+
+ *ptoken = token;
+
done:
- return token;
+ return status;
}
/*
diff --git a/source3/libnet/libnet_conf.c b/source3/libnet/libnet_conf.c
index c8e55a70b2..d0ef6eb0e6 100644
--- a/source3/libnet/libnet_conf.c
+++ b/source3/libnet/libnet_conf.c
@@ -87,7 +87,7 @@ static WERROR libnet_conf_reg_open_path(TALLOC_CTX *mem_ctx,
struct registry_key **key)
{
WERROR werr = WERR_OK;
- NT_USER_TOKEN *token;
+ NT_USER_TOKEN *token = NULL;
TALLOC_CTX *tmp_ctx = NULL;
if (path == NULL) {
@@ -109,11 +109,9 @@ static WERROR libnet_conf_reg_open_path(TALLOC_CTX *mem_ctx,
goto done;
}
- token = registry_create_admin_token(tmp_ctx);
- if (token == NULL) {
+ werr = ntstatus_to_werror(registry_create_admin_token(tmp_ctx, &token));
+ if (W_ERROR_IS_OK(werr)) {
DEBUG(1, ("Error creating admin token\n"));
- /* what is the appropriate error code here? */
- werr = WERR_CAN_NOT_COMPLETE;
goto done;
}
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 358fabfb2a..9700cd1320 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -3529,7 +3529,7 @@ static bool process_registry_globals(bool (*pfunc)(const char *, const char *))
char *valname = NULL;
char *valstr = NULL;
uint32 idx = 0;
- NT_USER_TOKEN *token;
+ NT_USER_TOKEN *token = NULL;
ctx = talloc_init("process_registry_globals");
if (!ctx) {
@@ -3543,8 +3543,9 @@ static bool process_registry_globals(bool (*pfunc)(const char *, const char *))
goto done;
}
- if (!(token = registry_create_admin_token(ctx))) {
- DEBUG(1, ("Error creating admin token\n"));
+ werr = ntstatus_to_werror(registry_create_admin_token(ctx, &token));
+ if (!W_ERROR_IS_OK(werr)) {
+ DEBUG(1, ("Error creating admin token: %s\n",dos_errstr(werr)));
goto done;
}