summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorWilco Baan Hofman <wilco@baanhofman.nl>2009-04-20 16:51:33 +0200
committerGünther Deschner <gd@samba.org>2009-04-20 23:16:17 +0200
commit171a361375e1cd76a80253d67e4e34a139bb5570 (patch)
tree50f01eb72412462dd69ce0b17ccc99834b4d3d01 /source3
parent933482e64869f5aee2ca0356abb721facfd65943 (diff)
downloadsamba-171a361375e1cd76a80253d67e4e34a139bb5570.tar.gz
samba-171a361375e1cd76a80253d67e4e34a139bb5570.tar.bz2
samba-171a361375e1cd76a80253d67e4e34a139bb5570.zip
Fix ini parsing in the s3 gpext modules. Fix ini parser API. Make the build work
Signed-off-by: Günther Deschner <gd@samba.org>
Diffstat (limited to 'source3')
-rw-r--r--source3/Makefile.in2
-rw-r--r--source3/libgpo/gpext/scripts.c10
-rw-r--r--source3/libgpo/gpext/security.c25
3 files changed, 22 insertions, 15 deletions
diff --git a/source3/Makefile.in b/source3/Makefile.in
index ccb5a6e6fa..51a469b2b9 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -411,7 +411,7 @@ LIBADDNS_OBJ = $(LIBADDNS_OBJ0) $(SOCKET_WRAPPER_OBJ)
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)
diff --git a/source3/libgpo/gpext/scripts.c b/source3/libgpo/gpext/scripts.c
index ddea35c644..4ced3abda5 100644
--- a/source3/libgpo/gpext/scripts.c
+++ b/source3/libgpo/gpext/scripts.c
@@ -124,6 +124,7 @@ static NTSTATUS scripts_parse_ini_section(struct gp_inifile_context *ini_ctx,
size_t *num_entries)
{
NTSTATUS status = NT_STATUS_OBJECT_NAME_NOT_FOUND;
+ NTSTATUS result;
int i = 0;
while (1) {
@@ -141,8 +142,8 @@ static NTSTATUS scripts_parse_ini_section(struct gp_inifile_context *ini_ctx,
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;
}
@@ -151,7 +152,10 @@ static NTSTATUS scripts_parse_ini_section(struct gp_inifile_context *ini_ctx,
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, &parameters);
+ if (!NT_STATUS_IS_OK(result)) {
+ break;
+ }
{
struct gp_registry_entry *entry = NULL;
diff --git a/source3/libgpo/gpext/security.c b/source3/libgpo/gpext/security.c
index 6aeb354c41..8adeb59ead 100644
--- a/source3/libgpo/gpext/security.c
+++ b/source3/libgpo/gpext/security.c
@@ -56,27 +56,30 @@ struct gpttmpl_table {
#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;
}
@@ -84,9 +87,9 @@ static NTSTATUS gpttmpl_parse_header(dictionary *dict,
*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;
}
@@ -109,7 +112,7 @@ static NTSTATUS gpttmpl_init_context(TALLOC_CTX *mem_ctx,
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)));