summaryrefslogtreecommitdiff
path: root/source3/libgpo
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2017-05-04 15:06:39 +0200
committerVolker Lendecke <vl@samba.org>2017-05-09 01:15:25 +0200
commitb6d2017467b59a5929a21b53fff52542d3dee9de (patch)
tree17d891fc9d53e13602701f97492b577739b83f4d /source3/libgpo
parent24d43f88408d69b38b685974685b159eec897e87 (diff)
downloadsamba-b6d2017467b59a5929a21b53fff52542d3dee9de.tar.gz
s3-gpo: Fix build of scripts CSE
Guenther Signed-off-by: Guenther Deschner <gd@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org>
Diffstat (limited to 'source3/libgpo')
-rw-r--r--source3/libgpo/gpext/scripts.c39
1 files changed, 22 insertions, 17 deletions
diff --git a/source3/libgpo/gpext/scripts.c b/source3/libgpo/gpext/scripts.c
index 3f2c514700c..ccd1712bfc9 100644
--- a/source3/libgpo/gpext/scripts.c
+++ b/source3/libgpo/gpext/scripts.c
@@ -83,7 +83,7 @@ static NTSTATUS generate_gp_registry_entry(TALLOC_CTX *mem_ctx,
const char *key,
const char *value,
uint32_t data_type,
- const void *data_p,
+ DATA_BLOB *blob,
enum gp_reg_action action,
struct gp_registry_entry **entry_out)
{
@@ -97,19 +97,7 @@ static NTSTATUS generate_gp_registry_entry(TALLOC_CTX *mem_ctx,
NT_STATUS_HAVE_NO_MEMORY(data);
data->type = data_type;
- switch (data->type) {
- case REG_QWORD:
- data->data = data_blob_talloc(mem_ctx, NULL, 8);
- SBVAL(data->data.data, 0, *(uint64_t *)data_p);
- break;
- case REG_SZ:
- if (!push_reg_sz(mem_ctx, &data->data, (const char *)data_p)) {
- return NT_STATUS_NO_MEMORY;
- }
- break;
- default:
- return NT_STATUS_NOT_SUPPORTED;
- }
+ data->data = *blob;
entry->key = key;
entry->data = data;
@@ -141,6 +129,8 @@ static NTSTATUS scripts_parse_ini_section(struct gp_inifile_context *ini_ctx,
const char *script = NULL;
const char *count = NULL;
const char *parameters = NULL;
+ DATA_BLOB blob;
+ bool ok;
count = talloc_asprintf(ini_ctx->mem_ctx, "%d", i);
NT_STATUS_HAVE_NO_MEMORY(count);
@@ -167,11 +157,17 @@ static NTSTATUS scripts_parse_ini_section(struct gp_inifile_context *ini_ctx,
{
struct gp_registry_entry *entry = NULL;
+
+ ok = push_reg_sz(ini_ctx->mem_ctx, &blob, script);
+ if (!ok) {
+ return NT_STATUS_NO_MEMORY;
+ }
+
status = generate_gp_registry_entry(ini_ctx->mem_ctx,
count,
GP_SCRIPTS_REG_VAL_SCRIPT,
REG_SZ,
- script,
+ &blob,
GP_REG_ACTION_ADD_VALUE,
&entry);
NT_STATUS_NOT_OK_RETURN(status);
@@ -184,11 +180,17 @@ static NTSTATUS scripts_parse_ini_section(struct gp_inifile_context *ini_ctx,
}
{
struct gp_registry_entry *entry = NULL;
+
+ ok = push_reg_sz(ini_ctx->mem_ctx, &blob, parameters);
+ if (!ok) {
+ return NT_STATUS_NO_MEMORY;
+ }
+
status = generate_gp_registry_entry(ini_ctx->mem_ctx,
count,
GP_SCRIPTS_REG_VAL_PARAMETERS,
REG_SZ,
- parameters,
+ &blob,
GP_REG_ACTION_ADD_VALUE,
&entry);
NT_STATUS_NOT_OK_RETURN(status);
@@ -201,11 +203,14 @@ static NTSTATUS scripts_parse_ini_section(struct gp_inifile_context *ini_ctx,
}
{
struct gp_registry_entry *entry = NULL;
+
+ blob = data_blob_talloc_zero(ini_ctx->mem_ctx, 8);
+
status = generate_gp_registry_entry(ini_ctx->mem_ctx,
count,
GP_SCRIPTS_REG_VAL_EXECTIME,
REG_QWORD,
- 0,
+ &blob,
GP_REG_ACTION_ADD_VALUE,
&entry);
NT_STATUS_NOT_OK_RETURN(status);