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
#include "includes.h"
#include "system/filesys.h"
#include "../libgpo/gpo.h"
+#include "../libgpo/gpo_ini.h"
#if _SAMBA_BUILD_ == 4
#include "param/param.h"
{
struct gp_inifile_context *ctx = NULL;
NTSTATUS status;
+ int rv;
char *tmp_filename = NULL;
const char *ini_filename = NULL;
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;
#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)
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;
}
*version = v;
}
- result = NT_STATUS_OK;
+ talloc_free(ctx);
- return result;
+ return NT_STATUS_OK;
}
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);
GPEXT_OBJ = ../libgpo/gpext/gpext.o @GPEXT_STATIC@
-LIBGPO_OBJ0 = ../libgpo/gpo_ldap.o libgpo/gpo_ini.o ../libgpo/gpo_util.o \
+LIBGPO_OBJ0 = ../libgpo/gpo_ldap.o ../libgpo/gpo_ini.o ../libgpo/gpo_util.o \
../libgpo/gpo_fetch.o libgpo/gpo_filesync.o ../libgpo/gpo_sec.o \
libgpo/gpo_reg.o \
$(GPEXT_OBJ)
size_t *num_entries)
{
NTSTATUS status = NT_STATUS_OBJECT_NAME_NOT_FOUND;
+ NTSTATUS result;
int i = 0;
while (1) {
GP_SCRIPTS_SECTION_CMDLINE);
NT_STATUS_HAVE_NO_MEMORY(key);
- script = iniparser_getstring(ini_ctx->dict, key, NULL);
- if (!script) {
+ result = gp_inifile_getstring(ini_ctx, key, &script);
+ if (!NT_STATUS_IS_OK(result)) {
break;
}
GP_SCRIPTS_SECTION_PARAMETERS);
NT_STATUS_HAVE_NO_MEMORY(key);
- parameters = iniparser_getstring(ini_ctx->dict, key, NULL);
+ result = gp_inifile_getstring(ini_ctx, key, ¶meters);
+ if (!NT_STATUS_IS_OK(result)) {
+ break;
+ }
{
struct gp_registry_entry *entry = NULL;
#define GPTTMPL_VALUE_CHICAGO "$CHICAGO$" /* whatever this is good for... */
#define GPTTMPL_PARAMETER_UNICODE "Unicode"
-static NTSTATUS gpttmpl_parse_header(dictionary *dict,
+static NTSTATUS gpttmpl_parse_header(struct gp_inifile_context *ini_ctx,
uint32_t *version_out)
{
const char *signature = NULL;
+ NTSTATUS result;
uint32_t version;
+ int is_unicode;
- if (!dict) {
+ if (!ini_ctx) {
return NT_STATUS_INVALID_PARAMETER;
}
- if ((signature = iniparser_getstring(dict, GPTTMPL_SECTION_VERSION
- ":"GPTTMPL_PARAMETER_SIGNATURE, NULL)) == NULL) {
+ result = gp_inifile_getstring(ini_ctx, GPTTMPL_SECTION_VERSION
+ ":"GPTTMPL_PARAMETER_SIGNATURE, &signature);
+ if (!NT_STATUS_IS_OK(result)) {
return NT_STATUS_INTERNAL_DB_CORRUPTION;
}
if (!strequal(signature, GPTTMPL_VALUE_CHICAGO)) {
return NT_STATUS_INTERNAL_DB_CORRUPTION;
}
-
- if ((version = iniparser_getint(dict, GPTTMPL_SECTION_VERSION
- ":"GPTTMPL_PARAMETER_REVISION, Undefined)) == Undefined) {
+ result = gp_inifile_getint(ini_ctx, GPTTMPL_SECTION_VERSION
+ ":"GPTTMPL_PARAMETER_REVISION, &version);
+ if (!NT_STATUS_IS_OK(result))
return NT_STATUS_INTERNAL_DB_CORRUPTION;
}
*version_out = version;
}
- /* treat that as boolean */
- if ((!iniparser_getboolean(dict, GPTTMPL_SECTION_UNICODE
- ":"GPTTMPL_PARAMETER_UNICODE, Undefined)) == Undefined) {
+ result = gp_inifile_getint(ini_ctx, GPTTMPL_SECTION_UNICODE
+ ":"GPTTMPL_PARAMETER_UNICODE, is_unicode);
+ if (!NT_STATUS_IS_OK(result) || !is_unicode) {
return NT_STATUS_INTERNAL_DB_CORRUPTION;
}
GPTTMPL_UNIX_PATH, &tmp_ctx);
NT_STATUS_NOT_OK_RETURN(status);
- status = gpttmpl_parse_header(tmp_ctx->dict, &version);
+ status = gpttmpl_parse_header(tmp_ctx, &version);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(1,("gpttmpl_init_context: failed: %s\n",
nt_errstr(status)));