diff options
-rw-r--r-- | source3/lib/util_reg_smbconf.c | 13 | ||||
-rw-r--r-- | source3/libnet/libnet_conf.c | 8 | ||||
-rw-r--r-- | source3/param/loadparm.c | 7 |
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; } |