return WERR_OK;
}
-/*
+/**
* Open a subkey of KEY_SMBCONF (i.e a service)
*/
-static WERROR libnet_smbconf_reg_open_path(TALLOC_CTX *ctx,
- const char *subkeyname,
+static WERROR libnet_smbconf_reg_open_path(TALLOC_CTX *mem_ctx,
+ const char *path,
uint32 desired_access,
struct registry_key **key)
{
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"));
+ if (path == NULL) {
+ DEBUG(1, ("Error: NULL path string given\n"));
+ werr = WERR_INVALID_PARAM;
goto done;
}
- if (subkeyname == NULL) {
- path = talloc_strdup(ctx, KEY_SMBCONF);
- } else {
- path = talloc_asprintf(ctx, "%s\\%s", KEY_SMBCONF, subkeyname);
+ token = registry_create_admin_token(mem_ctx);
+ if (token == NULL) {
+ DEBUG(1, ("Error creating admin token\n"));
+ /* what is the appropriate error code here? */
+ werr = WERR_CAN_NOT_COMPLETE;
+ goto done;
}
- werr = reg_open_path(ctx, path, desired_access,
- token, key);
+ werr = reg_open_path(mem_ctx, path, desired_access, token, key);
if (!W_ERROR_IS_OK(werr)) {
DEBUG(1, ("Error opening registry path '%s': %s\n",
path, dos_errstr(werr)));
}
+done:
+ return werr;
+}
+
+/**
+ * Open a subkey of KEY_SMBCONF (i.e a service)
+ */
+static WERROR libnet_smbconf_reg_open_service_key(TALLOC_CTX *ctx,
+ const char *servicename,
+ uint32 desired_access,
+ struct registry_key **key)
+{
+ WERROR werr = WERR_OK;
+ char *path = NULL;
+ NT_USER_TOKEN *token;
+
+ if (servicename == NULL) {
+ DEBUG(3, ("Error: NULL servicename given.\n"));
+ werr = WERR_INVALID_PARAM;
+ goto done;
+ }
+
+ path = talloc_asprintf(ctx, "%s\\%s", KEY_SMBCONF, servicename);
+
+ werr = libnet_smbconf_reg_open_path(ctx, path, desired_access, key);
+
done:
TALLOC_FREE(path);
return werr;
uint32 desired_access,
struct registry_key **key)
{
- return libnet_smbconf_reg_open_path(ctx, NULL, desired_access, key);
+ return libnet_smbconf_reg_open_path(ctx, KEY_SMBCONF, desired_access,
+ key);
}
static bool libnet_smbconf_value_exists(struct registry_key *key,
TALLOC_CTX* mem_ctx = talloc_stackframe();
enum winreg_CreateAction action;
- if (!(token = registry_create_admin_token(mem_ctx))) {
- /* what is the appropriate error code here? */
- werr = WERR_CAN_NOT_COMPLETE;
- goto done;
- }
-
path = talloc_strdup(mem_ctx, KEY_SMBCONF);
if (path == NULL) {
werr = WERR_NOMEM;
}
p = strrchr(path, '\\');
*p = '\0';
- werr = reg_open_path(mem_ctx, path, REG_KEY_WRITE, token, &parent_key);
+ werr = libnet_smbconf_reg_open_path(mem_ctx, path, REG_KEY_WRITE,
+ &parent_key);
if (!W_ERROR_IS_OK(werr)) {
goto done;
TALLOC_CTX *mem_ctx = talloc_stackframe();
struct registry_key *key = NULL;
- werr = libnet_smbconf_reg_open_path(mem_ctx, servicename, REG_KEY_READ,
- &key);
+ werr = libnet_smbconf_reg_open_service_key(mem_ctx, servicename,
+ REG_KEY_READ, &key);
if (W_ERROR_IS_OK(werr)) {
ret = true;
}
WERROR werr = WERR_OK;
struct registry_key *key = NULL;
- werr = libnet_smbconf_reg_open_path(mem_ctx, servicename, REG_KEY_READ,
- &key);
+ werr = libnet_smbconf_reg_open_service_key(mem_ctx, servicename,
+ REG_KEY_READ, &key);
if (!W_ERROR_IS_OK(werr)) {
goto done;
}
werr = libnet_smbconf_reg_createkey_internal(mem_ctx, service,
&key);
} else {
- werr = libnet_smbconf_reg_open_path(mem_ctx, service,
- REG_KEY_WRITE, &key);
+ werr = libnet_smbconf_reg_open_service_key(mem_ctx, service,
+ REG_KEY_WRITE, &key);
}
if (!W_ERROR_IS_OK(werr)) {
goto done;
goto done;
}
- werr = libnet_smbconf_reg_open_path(mem_ctx, service, REG_KEY_READ,
- &key);
+ werr = libnet_smbconf_reg_open_service_key(mem_ctx, service,
+ REG_KEY_READ, &key);
if (!W_ERROR_IS_OK(werr)) {
goto done;
}
return WERR_NO_SUCH_SERVICE;
}
- werr = libnet_smbconf_reg_open_path(mem_ctx, service, REG_KEY_ALL, &key);
+ werr = libnet_smbconf_reg_open_service_key(mem_ctx, service,
+ REG_KEY_ALL, &key);
if (!W_ERROR_IS_OK(werr)) {
goto done;
}