From 171a361375e1cd76a80253d67e4e34a139bb5570 Mon Sep 17 00:00:00 2001 From: Wilco Baan Hofman Date: Mon, 20 Apr 2009 16:51:33 +0200 Subject: Fix ini parsing in the s3 gpext modules. Fix ini parser API. Make the build work MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Günther Deschner --- libgpo/config.mk | 3 ++- libgpo/gpo_fetch.c | 1 + libgpo/gpo_ini.c | 19 +++++++++++++++---- libgpo/gpo_ini.h | 2 +- 4 files changed, 19 insertions(+), 6 deletions(-) (limited to 'libgpo') diff --git a/libgpo/config.mk b/libgpo/config.mk index a9ad76c964..6472d16191 100644 --- a/libgpo/config.mk +++ b/libgpo/config.mk @@ -2,5 +2,6 @@ PRIVATE_DEPENDENCIES = LIBLDB LIBSAMBA-NET LIBGPO_OBJ_FILES = ../libgpo/gpo_util.o ../libgpo/gpo_sec.o \ - ../libgpo/gpext/gpext.o ../libgpo/gpo_fetch.o \ + ../libgpo/gpext/gpext.o \ + ../libgpo/gpo_fetch.o ../libgpo/gpo_ini.o \ $(libgpodir)/ads_convenience.o $(libgpodir)/gpo_filesync.o diff --git a/libgpo/gpo_fetch.c b/libgpo/gpo_fetch.c index a5714f7243..beedfc2280 100644 --- a/libgpo/gpo_fetch.c +++ b/libgpo/gpo_fetch.c @@ -20,6 +20,7 @@ #include "includes.h" #include "system/filesys.h" #include "../libgpo/gpo.h" +#include "../libgpo/gpo_ini.h" #if _SAMBA_BUILD_ == 4 #include "param/param.h" diff --git a/libgpo/gpo_ini.c b/libgpo/gpo_ini.c index 79bf5fd8d8..af2b88c0b8 100644 --- a/libgpo/gpo_ini.c +++ b/libgpo/gpo_ini.c @@ -169,6 +169,7 @@ NTSTATUS gp_inifile_init_context(TALLOC_CTX *mem_ctx, { struct gp_inifile_context *ctx = NULL; NTSTATUS status; + int rv; char *tmp_filename = NULL; const char *ini_filename = NULL; @@ -192,6 +193,12 @@ NTSTATUS gp_inifile_init_context(TALLOC_CTX *mem_ctx, goto failed; } + rv = pm_process(tmp_filename, change_section, store_keyval_pair, ctx); + if (!rv) { + return NT_STATUS_NO_SUCH_FILE; + } + + ctx->generated_filename = tmp_filename; ctx->mem_ctx = mem_ctx; @@ -217,7 +224,7 @@ NTSTATUS gp_inifile_init_context(TALLOC_CTX *mem_ctx, #define GPT_INI_PARAMETER_VERSION "Version" #define GPT_INI_PARAMETER_DISPLAYNAME "displayName" -NTSTATUS parse_gpt_ini(struct gp_inifile_context *ctx, +NTSTATUS parse_gpt_ini(TALLOC_CTX *mem_ctx, const char *filename, uint32_t *version, char **display_name) @@ -226,12 +233,16 @@ NTSTATUS parse_gpt_ini(struct gp_inifile_context *ctx, int rv; int v = 0; char *name = NULL; + struct gp_inifile_context *ctx; if (!filename) { return NT_STATUS_INVALID_PARAMETER; } - rv = pm_process(filename, change_section, store_keyval_pair, NULL); + ctx = talloc_zero(mem_ctx, struct gp_inifile_context); + NT_STATUS_HAVE_NO_MEMORY(ctx); + + rv = pm_process(filename, change_section, store_keyval_pair, ctx); if (!rv) { return NT_STATUS_NO_SUCH_FILE; } @@ -263,7 +274,7 @@ NTSTATUS parse_gpt_ini(struct gp_inifile_context *ctx, *version = v; } - result = NT_STATUS_OK; + talloc_free(ctx); - return result; + return NT_STATUS_OK; } diff --git a/libgpo/gpo_ini.h b/libgpo/gpo_ini.h index 20588b6664..02ca0ff9ad 100644 --- a/libgpo/gpo_ini.h +++ b/libgpo/gpo_ini.h @@ -36,7 +36,7 @@ NTSTATUS gp_inifile_init_context(TALLOC_CTX *mem_ctx, uint32_t flags, const char *unix_path, const char *suffix, struct gp_inifile_context **ctx_ret); -NTSTATUS parse_gpt_ini(struct gp_inifile_context *ctx, +NTSTATUS parse_gpt_ini(TALLOC_CTX *ctx, const char *filename, uint32_t *version, char **display_name); -- cgit